我第一次尝试在mongoose中使用refrence,所以我想了解我是否要保存带有用户ID的模板,我们是否需要从客户端获取createdBy
值或如何将其插入到templateSchema
。基本上我想在用户保存模板时保存用户ID _id
。我能够保存模板,但我没有收到任何错误,createdBy
属性没有保存到模板集合中。任何外行的解释,以了解猫鼬的退却,以及我如何使用下面的代码。
user.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
}
});
template.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'}
});
templateCtrl.js
var eTemplate = require('./template.model');
var templatesJavaClass = {
"_id": 12586,
"name": "Java Class",
"id": "javaClass",
"appliesTo": [
"bpmn:UserTask"
],
"properties": [{
"label": "Java Package Name",
"type": "String",
"editable": true,
"binding": {
"type": "property",
"name": "camunda:class"
}
}],
"createdBy": "user1"
}
var template = new eTemplate(templatesJavaClass);
template.save(function(error){
console.log("successfully saved template");
if (error){
console.log(error);
}
});
答案 0 :(得分:0)
在创建/保存文档时,您需要将用户_id
放在createdBy
文档的template
字段中。
另外,请确保其类型为ObjectId
,而不是string
。否则你可能会得到Cast Error
。
试试这个:
var templatesJavaClass = {
"_id": 12586,
"name": "Java Class",
"id": "javaClass",
"appliesTo": [
"bpmn:UserTask"
],
"properties": [{
"label": "Java Package Name",
"type": "String",
"editable": true,
"binding": {
"type": "property",
"name": "camunda:class"
}
}],
//save users _id in createdBy field
"createdBy": user1._id;//assuming user1 is the users document
}
var template = new eTemplate(templatesJavaClass);
template.save(function(error){
console.log("successfully saved template");
if (error){
console.log(error);
}
});