gpt4 book ai didi

javascript - 如何以编程方式填充 Mongoose 模型字段?

转载 作者:行者123 更新时间:2023-11-28 04:36:42 25 4
gpt4 key购买 nike

我有以下架构:

const geoframeSchema = mongoose.Schema({
count: Number,
createdBy: String,
polygons: [
{
points: [{ lat: Number, lng: Number }],
},
],
});

我想以某种方式拥有另一个字段 createdAt,它使用 doc._id.getTimestamp() 进行填充。这样我就不必在每次用户查询此集合时都注入(inject)该值。我该如何实现这一目标?

最佳答案

您可以使用预保存 Hook :

const geoframeSchema = mongoose.Schema({
count: Number,
createdBy: String,
createdAt: Date,
polygons: [
{
points: [{ lat: Number, lng: Number }],
},
],
});

geoframeSchema.pre('save', function() {
this.createdAt = doc._id.getTimestamp();
});

您必须确保可以从架构访问 doc._id.getTimestamp() 或将其设置为实例方法:

geoframeSchema.methods.getTimestamp = function() {
...
}

...然后在预保存 Hook 中调用它:

geoframeSchema.pre('save', function() {
this.createdAt = this.getTimestamp();
});

在这种情况下,您还可以使用架构选项对象来设置将自动填充的时间戳:

const geoframeSchema = mongoose.Schema({
count: Number,
createdBy: String,
polygons: [
{
points: [{ lat: Number, lng: Number }],
},
],
}, {
timestamps: {
createdAt: 'createdAt',
updatedAt: 'updatedAt'
}
});

您可以像这样命名时间戳:

createdAt: 'timestampName'

关于javascript - 如何以编程方式填充 Mongoose 模型字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44147130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com