如何访问在 Mongoose 模式对象数组的另一个数组中定义的数组元素?
Posted
技术标签:
【中文标题】如何访问在 Mongoose 模式对象数组的另一个数组中定义的数组元素?【英文标题】:How to access array elements that are defined in another array of Mongoose scheme object Array? 【发布时间】:2020-12-04 16:51:26 【问题描述】:这是猫鼬中的User
架构:
var userSchema = new mongoose.Schema(
email:
type: String,
unique: true,
required: true,
,
name:
type: String,
required: true,
,
Addtasks: [
topic: String,
words: Number,
keywords: String,
website: String,
otherdetails: String,
exampleRadios: String,
deadline: Date,
Date: String,
fileName: String,
Bigpaths: [],
,
],
);
module.exports = mongoose.model('User', userSchema);
我想使用/访问Bigpaths
数组,该数组在Addtasks
数组中定义,该数组在User
中定义。 mongoDB
中已经有数据,我通过 UI
页面插入了这些数据。我正在尝试以下代码,但在控制台中出现此错误:
data.Addtasks[Object.keys(data.Addtasks).length - 2].Bigpaths.forEach(
(element) =>
// ...
)
作为
TypeError: Cannot read property 'Bigpaths' of undefined
at \Desktop\grumpytext\routes\index.js:99:71
代码:
const files = req;
User.findOne( email: req.user.email , function (error, data)
if (error)
console.log('Three');
else if (data)
if (Object.keys(data.Addtasks).length > 1)
data.Addtasks[Object.keys(data.Addtasks).length - 2].Bigpaths.forEach(
(element) =>
files.forEach((currentElement) =>
if (element.name == currentElement.filename)
files.pull(currentElement.filename);
);
);
);
如何解决此错误或如何访问Bigpaths
数组的所有元素以便我可以使用forEach
循环对其进行迭代?
【问题讨论】:
【参考方案1】:我不确定这里,但我认为您需要在操作之前populate Addtasks:
const files = req.files;
User.findOne(email:req.user.email).populate('Addtasks').exec((error, data) =>
if (error)
console.log("Three");
else
if(data)
if(Object.keys(data.Addtasks).length > 1)
console.log("Addtasks count: " + Object.keys(data.Addtasks).length);
data.Addtasks[Object.keys(data.Addtasks).length - 2].Bigpaths.forEach(element =>
files.forEach(currentElement =>
if(element.name == currentElement.filename)
files.pull(currentElement.filename);
)
);
);
请注意日志console.log("Addtasks count: " + Object.keys(data.Addtasks).length);
- 如果解决方案不起作用,我建议添加一些打印,尤其是检查元素数量是否符合预期或对象内的属性是否正常。
【讨论】:
Addtasks 的数量是多少?以上是关于如何访问在 Mongoose 模式对象数组的另一个数组中定义的数组元素?的主要内容,如果未能解决你的问题,请参考以下文章
Mongoose- 将数组中的数据搜索/过滤到具有特定项目的另一个数组中
如何在不选择模式配置参数的情况下使用 mongoose 在 MongoDB 模式实例化中的关联数组/对象中执行 foreach?