将时间戳添加到mongoose中的新子文档或子模式中



我在mongo atlas 中有这个文档

_id: 5f8939cbedf74e363c37dd86,
firstname: "Person",
lastname: "Person lastname",
sex: "Masculino",
age: "20",
birthDay: 2020-10-07T00:00:00.000+00:00,
vaccines: Array
0:Object
dose: Array
_id: 5f8939cbedf74e363c37dd87
vaccine:5f7023ad96f7ed21e85be521
createdAt:2020-10-16T06:12:27.726+00:00
updatedAt:2020-10-16T06:12:27.726+00:00
1:Object
dose:Array
_id:5f893a9ca98e97188c93fea8
vaccine:5f70259796f7ed21e85be523
2:Object
dose:Array
_id:5f893acda98e97188c93fea9
vaccine:5f7023ad96f7ed21e85be521

这是我的猫鼬模式

const mySchema = new Schema({
firstname: {
type: String,
required: true,
},
lastname: {
type: String,
required: true,
},
sex: {
type: String,
required: true,
},
age: {
type: String,
required: true,
},
birthDay: {
type: Date,
required: true,
},
vaccines: [
{
type: new Schema(
{
vaccine: {
type: Schema.ObjectId,
ref: "Vaccine",
},
dose: Array,
},
{ timestamps: true }
),
},
],
});

每次我添加一个新人,疫苗数组都会得到一个带有时间戳的新对象,正如你所看到的,在我的js文件中,我使用以下代码:

const addPerson = (person) => {
const myPerson= new Model(person);
return myPerson.save();
};

然后,当我为同一个人添加新疫苗时,它没有得到时间戳,我使用以下代码:

const addPersonVaccine = async ({ params, body }) => {
if (!params) return Promise.reject("Invalid ID");
const vaccines = [body];
const foundPerson = await Model.updateOne(
{
_id: params,
},
{
$push: {
vaccines: vaccines,
},
}
);
return foundPerson;
};

这就是我体内的疫苗阵列:[ { vaccine: '5f72c909594ee82d107bf870', dose: 'Primera' } ]

问题是,我没有关于下一个时间戳的结果,正如你在我的mongo图集文档中看到的那样:

1:Object
dose:Array
_id:5f893a9ca98e97188c93fea8
vaccine:5f70259796f7ed21e85be523
2:Object
dose:Array
_id:5f893acda98e97188c93fea9
vaccine:5f7023ad96f7ed21e85be521

这是在子文档或子架构中实现时间戳的最佳方式吗?

我会感谢你的回答,thnks👏

您可以使用mongoose模式时间戳选项来内部模式

const mongoose = require("mongoose");

const forumSchema = new mongoose.Schema(
{
title: { type: String, required: true },
biddings: [
{
type: new mongoose.Schema(
{
biddingId: String,
biddingPoints: Number
},
{ timestamps: true }
)
}
]
},
{ timestamps: true }
);

const Forum = mongoose.model("Forum", forumSchema);

module.exports = Forum;

有关更多Mongoose模式的信息,请在嵌套文档上设置时间戳

const mySchema = new Schema({
firstname: {
type: String,
required: true,
},
lastname: {
type: String,
required: true,
},
sex: {
type: String,
required: true,
},
age: {
type: String,
required: true,
},
birthDay: {
type: Date,
required: true,
},
vaccines: [
{
type: new Schema(
{
vaccine: {
type: Schema.ObjectId,
ref: "Vaccine",
},
dose: Array,
},
{ timestamps: { createdAt: "created_at", updatedAt: 
"updated_at" } }
),
},
],
},{ timestamps: { createdAt: "created_at", updatedAt: 
"updated_at" } }
);

更新查询

testModel
.updateMany(
{ _id: _id },
{ $push: { vaccines: vaccines } },
{ multi: true }
)
.then((update) => {
res.send(update);
})
.catch((err) => {
res.send(err);
});

最新更新