gpt4 book ai didi

node.js - Mongoose.js 忽略子文档架构中的默认值

转载 作者:太空宇宙 更新时间:2023-11-04 00:58:00 24 4
gpt4 key购买 nike

我目前正在使用 mongodb 和 mongoose 编写一个网络应用程序。我定义了一个文档模式,它有一组子文档。我在不同的架构中定义了子文档。子文档的字段具有默认值,例如:end: {type: Date, default: Date.now}。不幸的是,在使用某些子文档创建父文档时,仅设置了我显式设置的子文档的字段。 Mongoose 似乎忽略了 default 选项。

你们知道我做错了什么吗?

编辑:

employment.model.js

var Shift = require('./shift.model.js').ShiftSchema;

var EmploymentSchema = new Schema({
title: {type: String, required: true},
....
shifts: [Shift]
});

shift.model.js

var ShiftSchema = new Schema({
title: {type: String},
....
info: {type:String, default: 'Hallo'},
start: {type: Date, default: Date.now, index: true},
end: {type: Date, default: Date.now}
});
module.exports.ShiftSchema = ShiftSchema;
module.exports = mongoose.model('Shift', ShiftSchema);

以上默认值均未设置。我的 mongoose.js 版本是:~3.8.8

示例类次创建

Employment.create({
title: 'PopulateDB Employ',
start: new Date(),
customer: result.customer,
shifts: [{
title: 'Shift 1',
start: new Date()
},{
title: 'Shift 2',
start: new Date()
}]
},cb)

最佳答案

您将使用下一条语句覆盖 ShiftSchema 的导出,该语句将模型指定为模块的唯一导出。结果是 Shiftemployment.model.js 中最终成为 undefined

将该文件的第一行更改为以下内容以从导出的模型访问架构:

var Shift = require('./shift.model.js').schema;

然后只需删除 shift.model.js 中的 module.exports.ShiftSchema = ShiftSchema; 行即可。

关于node.js - Mongoose.js 忽略子文档架构中的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28741723/

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