我正在尝试根据用户ID保存模板,如何确保模板保存时使用用户ID _id
保存?我添加了对templateSchema
的{{1}}的引用。
user.model.js
User
template.model.js
var UserSchema = new mongoose.Schema({
_id: { type: String, required: true, index: {unique: true}},
firstName: String,
lastName: String,
type: String,
groups:[{type: String, ref: 'Group', required: false}]
},
{
toObject: {
virtuals: true
},
toJSON: {
virtuals: true
}
});
export default mongoose.model('User', UserSchema);
template.controller.js
var User = require('../user/user.model.js');
var TemplateSchema = new mongoose.Schema({
_id: { type: String, required: true},
name: String,
id: String,
appliesTo: [],
properties: [],
createdBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User'}
});
export default mongoose.model('Templates', TemplateSchema);
答案 0 :(得分:0)
Mongoose有两个内置函数,在保存文档之前(之前)和之后(之后)调用。我的建议是利用它们。以下是我的代码示例,其中我在保存用户文档之前搜索序列号。您可以这样做:保存模板时,请向数据库请求用户ID(反之亦然)。你甚至可以保存一个,获取id并保存另一个。
Bellow遵循序列和用户的代码。
var UserSchema = new Schema({
username: { type: String, required: true, unique: true },
id: { type: String },
...
});
UserSchema.pre('save', function(next) {
let doc = this;
let id = 'userSeq'
Sequence.findByIdAndUpdate(id, { $inc : {nextSId : 1} }, function(error,data) {
if(error)
next(error)
doc.id = data.nextSId-1;
next();
})
});
我希望我的回答对你有用。只是一个评论,如果文档更新,则不会调用前置和后置。