gpt4 book ai didi

node.js - 使用 Node.js 和 mongoose 更新嵌套的子文档

转载 作者:可可西里 更新时间:2023-11-01 10:21:44 25 4
gpt4 key购买 nike

我试图将详细信息保存到我的嵌套子文档 tertiary

module.exports = mongoose.model('Todo', {
title : String,
image:String,
bgimage:String,
secondary:[Secondary]
});

var Secondary = new mongoose.Schema({
title : String,
image:String,
bgimage:String,
tertiary :[Tertiary]
});

var Tertiary = new mongoose.Schema({
title : String,
description:String,
image:String
});

保存我的第三级数据的代码如下。我有我的主要对象 ID 和次要对象 ID。

Todo.findById(fields.primaryid, function (err, secondary_todo) {
if (!err) {
console.log("---Inside not errot----");
console.log(fields.secondaryRefid);

secondary_todo.secondary.findById(fields.secondaryRefid,
function (err, tertiary_todo) {
console.log("---In Secondary data----");
console.log(tertiary_todo);
if (!err) {
tertiary_todo.tertiary.push({
_id: mongoose.Types.ObjectId(),
title : fields.title,
image : fields.file,
description : fields.description,
});
}
tertiary_todo.save();
});
}
});

我在终端中得到的错误是

/......./.../..../lib/utils.js:419
throw err;
^
TypeError: Object [object Object],[object Object],[object Object] has no method 'findById'
at Promise.<anonymous>

任何人都可以快速修复。我尝试并使用了它。

最佳答案

您可能想阅读 this文档中描述子文档的页面以及用于查找子文档的特殊 id() 方法给出其 id。
所以不是在子文档上调用 findById

secondary_todo.secondary.findById(fields.secondaryRefid, function (err, tertiary_todo) {  ...

像这样使用id

var tertiary_todo = secondary_todo.secondary.id(fields.secondaryRefid);
...

更新:另一个问题可能是您的架构设置被破坏,因为您在定义子架构之前使用它们。像这样重新排序

var Tertiary = new mongoose.Schema({
title : String,
description:String,
image:String
});

var Secondary = new mongoose.Schema({
title : String,
image:String,
bgimage:String,
tertiary :[Tertiary]
});

module.exports = mongoose.model('Todo', {
title : String,
image:String,
bgimage:String,
secondary:[Secondary]
});

关于node.js - 使用 Node.js 和 mongoose 更新嵌套的子文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38821693/

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