gpt4 book ai didi

node.js - Mongoose findOneAndUpdate 嵌套文档

转载 作者:太空宇宙 更新时间:2023-11-03 22:32:19 26 4
gpt4 key购买 nike

我正在尝试更新包含另外 2 个文档的文档。为了实现此任务,我使用 findOneAndUpdate,但 mongoose 向我抛出 CastError(Cast to ObjectId failed)。

我的模型:

用户.js

var userSchema = new Schema({
email: String,
info: {
type : Schema.ObjectId,
required : true,
ref : 'Info'
}
});
module.exports = mongoose.model('User', userSchema);

信息.js

var infoSchema = new Schema({
firstname: String,
lastname: String
});
module.exports = mongoose.model('Info', infoSchema);

我的查询:

var tmp = {
email: req.body.email,
info: {
name: req.body.info.name
}
};

User.findOneAndUpdate({
_id: req.params.id
}, tmp, {
upsert: false,
new: true
}).exec(function(err, doc) {
/* check errors */
/* send response */
});

我做错了什么?我的模型设置不当吗?

最佳答案

CastError: Cast to ObjectId failed

info的类型是Schema.ObjectId,而一个对象

info: {
name: req.body.info.name
}

作为ObjectId传递给它,结果失败了。

这里也许有一种解决方法。

var new_info = new Info({
firstname: req.body.info.name.firstname, //
lastname: req.body.info.name.lastname //
});

new_info.save(function(err, doc) {
if (err)
console.log(err);
else {
var tmp = {
email: req.body.email,
info: doc._id
}

User.findOneAndUpdate({
_id: req.params.id
}, tmp, {
upsert: false,
new: true
}).exec(function(err, doc) {
//
});
}
});

关于node.js - Mongoose findOneAndUpdate 嵌套文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34889271/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com