Mongoose,解析嵌入式数组中的路径

Posted

技术标签:

【中文标题】Mongoose,解析嵌入式数组中的路径【英文标题】:Mongoose, resolve path in embedded array 【发布时间】:2014-05-13 13:19:52 【问题描述】:

我有以下 Mongoose 架构:

var WeekSchema = new Schema(
    days: [
        name: String
    ]
);

我想得到“名字”并用它做点什么(让我们假设一个验证)。 因此,我尝试使用以下代码进行验证:

WeekSchema.path('days.name').validate(function(value)
    return /monday|tuesday|wednesday|thursday|friday|saturday|sunday/i.test(value);
, 'Invalid day');

但我得到了错误:

WeekSchema.path('days.name').validate(function(value)
                            ^
TypeError: Cannot call method 'validate' of undefined

事实上,如果我用

打印解决的路径
console.log(WeekSchema.path('days.name'));

我有'未定义'。

问题是,如何通过路径获取“名称”?

【问题讨论】:

【参考方案1】:

我今天遇到了这个问题,所以我通过打印出主要路径进行了一些研究,在你的情况下:

console.log(JSON.stringify(WeekSchema.path('days'), null, 4));
然后我发现子文档的路径是:
WeekSchema.path('days').schema.path('name');

这是我在这里的第一个答案,希望对您有所帮助:)

【讨论】:

以上是关于Mongoose,解析嵌入式数组中的路径的主要内容,如果未能解决你的问题,请参考以下文章

过滤和更新 mongodb mongoose 中的嵌入式数组

mongoose:使用$ pull删除嵌入式文档数组中的值(MongoDB 3.4版本)

如何在 Mongoose 的嵌入式文档中检索数组的最后一个对象?

如何在 Mongoose 的嵌入式文档中检索数组的最后一个对象?

通过 Mongoose、Node.js、MongodB 中的特定属性查找嵌入式文档

当嵌入式数组对象更改时,Mongoose 实例 .save() 不起作用