简体   繁体   中英

How do I find if an Id is present in the array of team members (which stores user ids)?

I have this model of workspace schema in my node js project(model is displayed below) After the user logs into my application I want to display the information of a workspace only if it is created by him or he is a team member of that workspace

I am able to find the workspaces created by the user by the following query

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

similarly, I also want the workspaces in which the user is the team member 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 }); });

Since team_members is an array simply passing the user id is not yielding the result and workspaces2 remains empty

Thank you for your time !!

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

Use the $in Operator.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM