强制objectid在pathmongoose上的值对象对象失败

我是NodeJS和MongoDB的新手,在创build示例应用程序时遇到了以下问题

// ************ this is testusers.js file ************// var userdetails = require('userdetails'); var mongoose = require('mongoose'); var schema = mongoose.Schema; var geekDetails = new schema({ description: String, details: { type: mongoose.Schema.Types.ObjectId, ref: 'userDetails' } }); module.exports = { model: mongoose.model('geekDetails',geekDetails), schema: geekDetails }; // ************ this is user.js file ************// var mongoose = require('mongoose'); var schema = mongoose.Schema; var userDetails = new schema({ firstName: String, lastName: String, email: String, password: String }); module.exports = { model: mongoose.model('userDetails',userDetails), schema: userDetails }; // ************ this is create.js file [used to save the details to DB] *******// var testusers = require('testusers.js'); var mongoose = require('mongoose'); adduser = function(firstName,lastName,email,password,passwordConfirmation,description,callback){ new testusers.model({ description: description, details: { firstName: firstName, lastName: lastName, email: email, password: password } }).save(function(err,result){ if (err){ callback(err,null); } else { callback(null,result); } }); 

当我试图保存的细节,它返回了以下错误“ 强制objectid失败的价值对象对象的path'细节' ”我相信我做错了模式,但我无法弄清楚。

提前致谢

像这样保存参考文档不会用这样的mongoose工作。 这是一个select。 实际上,您需要首先保存embedded式文档( userdetails ),并使用该id来保存父级( testuser )。

 adduser= function(firstName,lastName,email,password,passwordConfirmation, description,callback){ new userDetails.model({ firstName:firstName, lastName:lastName, email:email, password:password }).save(function(err,doc){ new testusers.model({ description:description, details: doc._id }).save(function(err,result){ if(err){callback(err,null);} else{callback(null,result);} }); }); } 

使用承诺可能会使这个代码更好的阅读,但这应该给出这个想法。