【发布时间】:2018-01-12 14:25:59
【问题描述】:
我是后端 Web 开发的新手,目前正在学习 数据关联...我遇到了一个对我来说似乎很严重的错误,因为我是这个主题的新手...我我正在尝试在我的 userSchema 的 postArray 中添加 Post 的 ObjectId。
当我将第一个帖子添加到特定用户时,我没有得到预期的结果。我希望将 ObjectId 推送到 postArray 但这里实际发生的事情是整个 newPost 被推入 postArray。这是遇到的第一个问题。我没有得到任何错误,但我没有得到预期的结果!
第二个是当我将另一个帖子添加到 postArray 时,它给了我一个巨大的错误,命名为 ValidationError.. 我确实花了几个小时试图修复这个错误,这可能是一个未成年人,但对我来说是一种痛苦。我的代码在下面给出,错误也在下面发布!
var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/testdatabase");
var postSchema = new mongoose.Schema({
title: String,
content: String
});
var Post = mongoose.model("Post", postSchema);
var userSchema = new mongoose.Schema({
name: String,
email: String,
postArray: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'Post'
}]
});
var User = mongoose.model("User", userSchema);
var alex = new User({
name: "Alexander",
email: "alexander@gmail.com"
});
alex.save();
Post.create({
title: "I'm terribly stuck here!",
content: "Does anyone have an idea of where I'm stuck?"
}, function(err, newPost) {
User.findOne({name: "Alexander"}, function(err, foundUser) {
if(err) {
console.log(err);
} else {
console.log("THE NEWLY ADDED POST IS" + newPost);
foundUser.postArray.push(newPost);
foundUser.save(function(err, savedData) {
if(err) {
console.log(err);
} else {
console.log(savedData);
}
});
}
});
});
Blackdeath:~/environment/Associations $ node references.js THE NEWLY ADDED POST IS{ _id: 5a5845c180a490137330bcae, title: 'I\'m terribly stuck here!', content: 'Does anyone have an idea of where I\'m stuck?', __v: 0 } { ValidationError: User validation failed: postArray: Cast to [undefined] failed for value "[{"_id":"5a5844112d4c6512beb16846","title":"This makes me sick!","content":"I\'m stuck here..Someone save me!","__v":0}]" at path "postArray" at MongooseError.ValidationError (/home/ec2-user/environment/Associations/node_modules/mongoose/lib/error/validation.js:27:11) at model.Document.invalidate (/home/ec2-user/environment/Associations/node_modules/mongoose/lib/document.js:1643:32) at _init (/home/ec2-user/environment/Associations/node_modules/mongoose/lib/document.js:413:18) at init (/home/ec2-user/environment/Associations/node_modules/mongoose/lib/document.js:381:5) at model.Document.$__init (/home/ec2-user/environment/Associations/node_modules/mongoose/lib/document.js:351:3) at model.syncWrapper [as $__init] (/home/ec2-user/environment/Associations/node_modules/kareem/index.js:234:23) at model.Document.init (/home/ec2-user/environment/Associations/node_modules/mongoose/lib/document.js:319:8) at completeOne (/home/ec2-user/environment/Associations/node_modules/mongoose/lib/query.js:1980:12) at Immediate.<anonymous> (/home/ec2-user/environment/Associations/node_modules/mongoose/lib/query.js:1502:11) at Immediate.<anonymous> (/home/ec2-user/environment/Associations/node_modules/mquery/lib/utils.js:119:16) at runCallback (timers.js:672:20) at tryOnImmediate (timers.js:645:5) at processImmediate [as _immediateCallback] (timers.js:617:5) errors: { postArray: { ValidatorError: Cast to [undefined] failed for value "[{"_id":"5a5844112d4c6512beb16846","title":"This makes me sick!","content":"I\'m stuck here..Someone save me!","__v":0}]" at path "postArray" at MongooseError.ValidatorError (/home/ec2-user/environment/Associations/node_modules/mongoose/lib/error/validator.js:25:11) at _init (/home/ec2-user/environment/Associations/node_modules/mongoose/lib/document.js:413:37) at init (/home/ec2-user/environment/Associations/node_modules/mongoose/lib/document.js:381:5) at model.Document.$__init (/home/ec2-user/environment/Associations/node_modules/mongoose/lib/document.js:351:3) at model.syncWrapper [as $__init] (/home/ec2-user/environment/Associations/node_modules/kareem/index.js:234:23) at model.Document.init (/home/ec2-user/environment/Associations/node_modules/mongoose/lib/document.js:319:8) at completeOne (/home/ec2-user/environment/Associations/node_modules/mongoose/lib/query.js:1980:12) at Immediate.<anonymous> (/home/ec2-user/environment/Associations/node_modules/mongoose/lib/query.js:1502:11) at Immediate.<anonymous> (/home/ec2-user/environment/Associations/node_modules/mquery/lib/utils.js:119:16) at runCallback (timers.js:672:20) at tryOnImmediate (timers.js:645:5) at processImmediate [as _immediateCallback] (timers.js:617:5) message: 'Cast to [undefined] failed for value "[{"_id":"5a5844112d4c6512beb16846","title":"This makes me sick!","content":"I\\\'m stuck here..Someone save me!","__v":0}]" at path "postArray"', name: 'ValidatorError', properties: [Object], kind: 'cast', path: 'postArray', value: '[{"_id":"5a5844112d4c6512beb16846","title":"This makes me sick!","content":"I\'m stuck here..Someone save me!","__v":0}]', reason: undefined } }, _message: 'User validation failed', name: 'ValidationError' }
【问题讨论】:
-
问题一定要具体才能理解,不要简单地把错误贴到标题上,这样会使问题变得模糊理解,但在问题内部详细说明将有助于其他人理解和答案提供者。