如何使用mongoose引用解决种姓问题?

时间:2017-02-09 16:36:17

标签: node.js mongodb mongoose mongoose-schema

我在使用模板模型引用User时遇到了问题,我正在尝试保存模板数据,但它正在抛出强制转换为对象ID失败,我是新来的mongoose任何帮助将不胜感激。

templateModel.js

var User = require('../user/user.model.js');

var TemplateSchema = new mongoose.Schema({
  name: String,
  id: String,
  appliesTo: [],
  properties: [],
  createdBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User'}
 });


export default mongoose.model('Template', TemplateSchema);

userModel.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
    }
  });

UserSchema.virtual('fullName').get(function() {
  return this.firstName+' '+this.lastName;
});

export default mongoose.model('User', UserSchema);

服务器端的客户端对象打印

{
    name: 'Java Class',
    id: 'javaClass',
    appliesTo: ['bpmn:ServiceTask'],
    properties: [{
        label: 'Java Package Name',
        type: 'String',
        editable: true,
        binding: [Object]
    }],
    createdBy: 'sh829'
}

MongoDb错误

{
    "errors": {
        "createdBy": {
            "message": "Cast to ObjectID failed for value \"sh829\" at path \"createdBy\"",
            "name": "CastError",
            "stringValue": "\"sh829\"",
            "kind": "ObjectID",
            "value": "sh829",
            "path": "createdBy",
            "reason": {
                "message": "Cast to ObjectId failed for value \"sh829\" at path \"createdBy\"",
                "name": "CastError",
                "stringValue": "\"sh829\"",
                "kind": "ObjectId",
                "value": "sh829",
                "path": "createdBy"
            }
        }
    },
    "message": "Template validation failed",
    "name": "ValidationError"
}

0 个答案:

没有答案