Node.js 使用Mongoose在子文档数组中查找项

Node.js 使用Mongoose在子文档数组中查找项,node.js,mongodb,mongoose,mean-stack,Node.js,Mongodb,Mongoose,Mean Stack,我正在尝试向我的留言板模型添加一个实例方法,以告诉我给定的用户是否是该留言板的成员 留言板架构包含 members: [{ type: Schema.Types.ObjectId ref: 'User' }] 但是我的实例方法 MessageBoardSchema.methods.isUserMember = function(user) { return (this.members.id(user)); }; …告诉我this.members对象上不存在方法id 在

我正在尝试向我的留言板模型添加一个实例方法,以告诉我给定的用户是否是该留言板的成员

留言板架构包含

members: [{
    type: Schema.Types.ObjectId
    ref: 'User'
}]
但是我的实例方法

MessageBoardSchema.methods.isUserMember = function(user) {
    return (this.members.id(user));
};
…告诉我this.members对象上不存在方法
id


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

id
方法适用于在成员数组中包含真实文档的嵌入式文档;您在this.members中的
是一个对象数组。我建议您使用下划线.js

如果用户确实是用户id:

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;
};
如果用户确实是用户:

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;
};