首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Mongoose在子文档数组中查找项

使用Mongoose在子文档数组中查找项
EN

Stack Overflow用户
提问于 2014-08-25 17:48:45
回答 1查看 348关注 0票数 0

我试图向我的MessageBoard模型中添加一个实例方法,以告诉我给定的用户是否是该MessageBoard的成员。

MessageBoard模式包含

代码语言:javascript
复制
members: [{
    type: Schema.Types.ObjectId
    ref: 'User'
}]

但我的实例方法..。

代码语言:javascript
复制
MessageBoardSchema.methods.isUserMember = function(user) {
    return (this.members.id(user));
};

...tells me表示id方法在对象this.members上不存在。

我无法在其他类似问题中找到解决方案,因为我在这里使用的是引用而不是嵌套模式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-25 21:11:10

id方法适用于在您的成员数组中有真实文档的嵌入式文档;在this.members中,您拥有的是一个ObjecIds数组。我建议你使用underscore.js

如果用户确实是user_id:

代码语言:javascript
复制
MessageBoardSchema.methods.isUserMember = function(user) {
    var user_found = _.any(this.members, function(member){
         // Use toString() if you are dealing with ObjectIds since
         // new ObjectId("53fba4eb816bc772107552f0")==new ObjectId("53fba4eb816bc772107552f0")
         // outputs false
         return this.members.id.toString() == user.toString();
    });
    return user_found;
};

如果用户确实是用户:

代码语言:javascript
复制
MessageBoardSchema.methods.isUserMember = function(user) {
    var user_found = _.any(this.members, function(member){
         // Use toString() if you are dealing with ObjectIds as explained
         return this.members.id.toString() == user.id.toString();
    });
    return user_found;
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25491536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档