Mongodb $ push $ in -in -a Marray сбрасывает дату создания для всех подразделовJavascript

Форум по Javascript
Ответить
Anonymous
 Mongodb $ push $ in -in -a Marray сбрасывает дату создания для всех подразделов

Сообщение Anonymous »

Надеюсь, это имеет смысл. Используя Mongoose, чтобы выдвинуть новые элементы в массив подпросдокументов, документы добавляются нормально, однако в определенных (случайных) случаях дата создания текущих подраздел в массиве все меняется до последней добавленной временной метки. Это только начало происходить в последнее время, и я не могу воссоздать проблему локально, однако в производстве мои клиенты (многие пользователи) испытывают это.

Код: Выделить всё

const DocumentFileSchema = new Schema({
user: {
id: {
type: mongoose.Schema.Types.ObjectId,
required: true
},
firstName: {
type: String,
required: true
},
lastName: {
type: String,
required: true
}
},
file: {
type: String,
required: true
},
name: {
type: String,
required: true
}
}, {
timestamps: true
});

const ShipmentSchema = new Schema({
...
documents: [DocumentFileSchema]
}, {
timestamps: true,
collection: 'shipments',
toJSON: { virtuals: true }
})
< /code>
Я добавляю файлы, используя следующую функцию (загрузка, обрабатывающаяся в другом месте).
Я недавно добавил дату создания в эту функцию, чтобы установить значение вместо того, чтобы позволить Mongo обрабатывать метку времени, и это не решило проблему.  < /p>
const addFiles = async (id, body, files) => {
let user = JSON.parse(body.user);

let docs = [];
if (files) {
files.forEach(v => docs.push({ user: { ...user }, name: v.key.replace('shipments/',''), file: withHttp(v.location), createdAt: new Date() }));
return ShipmentModel.findByIdAndUpdate(
{ _id: id },
{ $push: { documents: { $each: docs } } },
{ new: true }
);

}
}
< /code>
Запись в Mongo (локально) работает безупречно, но, как упоминалось в производстве (которая является той же базой данных Mongo), пользователи загружают документы в разное время, и база данных заканчивается всеми временными лампами в Subdocuments (правильно, правильно, Timestmps).{
"_id": {
"$oid": "xxx"
},
...
"documents": [
{
"_id": {
"$oid": "xxx"
},
"user": {
"id": {
"$oid": "xxx"
},
"firstName": "John",
"lastName": "Doe"
},
"name": "VERSION 2-A.pdf",
"file": "xxx.pdf",
"updatedAt": {
"$date": "2025-08-20T16:13:21.609Z"
},
"createdAt": {
"$date": "2025-08-20T16:13:21.609Z"
}
},
{
"_id": {
"$oid": "xxx"
},
"user": {
"id": {
"$oid": "xxx"
},
"firstName": "Jane",
"lastName": "Doe"
},
"name": "PDF_Caregiver Connections-2.pdf",
"file": "xxx.pdf",
"updatedAt": {
"$date": "2025-08-20T16:54:59.307Z"
},
"createdAt": {
"$date": "2025-08-20T16:54:59.307Z"
}
}
],
"createdAt": {
"$date": "2024-07-23T18:05:50.052Z"
},
"updatedAt": {
"$date": "2025-08-20T17:28:39.538Z"
},
"__v": 0
}
< /code>
Когда другой пользователь добавляет новый документ в совершенно отдельное время, это то, что происходит при производстве (но происходит только случайным образом, а не для каждой доставки), он сбрасывает дату созданного в последнюю TimeStamp: < /p>
{
"_id": {
"$oid": "xxx"
},
...
"documents": [
{
"_id": {
"$oid": "xxx"
},
"user": {
"id": {
"$oid": "xxx"
},
"firstName": "JOE",
"lastName": "RANTSEVIC"
},
"name": "937379JR RC.pdf",
"file": "xxx.pdf",
"createdAt": {
"$date": "2025-08-25T11:51:49.375Z"
},
"updatedAt": {
"$date": "2025-08-25T11:51:49.375Z"
}
},
{
"_id": {
"$oid": "xxx"
},
"user": {
"id": {
"$oid": "xxx"
},
"firstName": "ALAN",
"lastName": "SALAZR"
},
"name": "RP-937379JR-Carrier-Contract.pdf",
"file": "xxx.pdf",
"createdAt": {
"$date": "2025-08-25T11:51:49.375Z"
},
"updatedAt": {
"$date": "2025-08-25T11:51:49.375Z"
}
}
],
"createdAt": {
"$date": "2025-08-25T11:15:00.627Z"
},
"updatedAt": {
"$date": "2025-08-25T15:09:36.155Z"
},
"__v": 0
}
Пожалуйста, помогите!

Подробнее здесь: https://stackoverflow.com/questions/797 ... bdocuments
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»