如何确定一组成员(存储用户ID)中是否存在ID?

时间:2019-07-20 02:11:41

标签: javascript node.js mongoose

我的节点js项目中有这个工作区模式模型(模型显示在下面) 用户登录到我的应用程序后,我只想显示工作空间的信息,除非该信息是由他创建的,或者他是该工作空间的团队成员

我能够通过以下查询找到用户创建的工作区

Workspace.find({creator:req.user._id},function(err,workspaces){ res.render('home',{ wokspacses:workspaces }); });

类似地,我还希望用户是团队成员的工作空间 Workspace.find({creator:req.user._id},function(err,workspaces){ Workspace.find({team_member:"WHAT SHOULD I WRITE HERE"},function(err,workspaces2){ res.render('home',{ wokspacses:workspaces wokspacses2:workspaces2 }); });

由于team_members是一个仅传递用户ID的数组,不会产生结果,而workspaces2仍为空

谢谢您的时间!

const mongoose = require('mongoose');

const workspaceSchema = mongoose.Schema({
      name:{
        type:String,
        required:true
      },
      date: {
        type: Date,
        required: true
      },
      creator:{
        type: Object,
        ref: 'User',
        required: true
      },
      team_member: [{ type: Object, ref: 'User' }]
});

module.exports = mongoose.model('Workspace',workspaceSchema);

1 个答案:

答案 0 :(得分:0)

使用$ in运算符。

const mongoose = require("mongoose")
const Schema = mongoose.Schema
mongoose.connect('mongodb://localhost/stackoverflow', {useNewUrlParser: true});

const workspaceSchema = new Schema({
      name:{
        type:String,
        required:true
      },
      date: {
        type: Date,
        required: true
      },
      creator:{
        type: Object,
        ref: 'User',
        required: true
      },
      team_member: [{ type: Object, ref: 'User' }]
});

const WorkspaceModel = mongoose.model('Workspace',workspaceSchema);
const sessionUserId = "5d330f3de87ec83f95504c44" //i.e. req.user._id; 

WorkspaceModel.find({
    $or:[
        { creator: sessionUserId },
        { 
            team_member: { 
                $in: [sessionUserId]
            } 
        }
    ]
}).exec((err, result) => {
    console.log("result", result)
})