Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 尝试在mongoose中使用$in查找记录_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js 尝试在mongoose中使用$in查找记录

Node.js 尝试在mongoose中使用$in查找记录,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我正试图在猫鼬中找到使用$in的记录。但这对我不起作用。我在MongoShell中有相同的查询,但在mongoose中它不工作 我的模式 { "_id": "574f1f979f44e7531786c80f", "name": "mySchool2", "branch": "karachi", "location": "Clifton ", "block": false, "created_at": 146480322344

我正试图在猫鼬中找到使用$in的记录。但这对我不起作用。我在MongoShell中有相同的查询,但在mongoose中它不工作 我的模式

{
      "_id": "574f1f979f44e7531786c80f",
      "name": "mySchool2",
      "branch": "karachi",
      "location": "Clifton ",
      "block": false,
      "created_at": 1464803223441,
      "updated_at": 1464803223441,
      "__v": 0,
      "classes": [
        "574f216afd487958cd69772a"
      ],
      "admin": [
        "574f20509f44e7531786c811",
        "57508a2a3a0a919c16ace3c0"
      ],
      "teacher": [
        "574f20f39f44e7531786c812",
        "575002b48188a3f821c2a66e",
        "57500bbaea09bc400d047bf6"
      ],
      "student": [
        "574f2d56590529c01a2a473b",
        "574f2e5842c5885b1b1729ab",
        "574f2ed542c5885b1b1729ae",
        "574f2f57555210991bf66e07",
        "574f2fcd087809b11bd8d5e4",
        "574f301d1f5025d61b7392b6",
        "574f30481d02afff1bb00c71",
        "574f30b01d02afff1bb00c74",
        "574f310038136b3d1cf31b96"
      ]
    }
我的mongose问题

app.services._chkAdminSchool = function(payload){
        var deferred = q.defer();
        School
            //.find({ teacher:{$in:['574f20f39f44e7531786c812']}})

            .find({_id : "574f1f979f44e7531786c80f",admin:{"$in":[Object("57508a2a3a0a919c16ace3c0")]}})
            //.select(filers)
            .exec(function(error, record) {
                if (error) {
                    deferred.reject({
                        status:404,
                        message: 'Error in API',
                        error: error
                    });
                } else {
                    if(record.length === 0){
                        deferred.reject({
                            message: 'Admin and school doesnot match',
                            data: record
                        });
                    }else{
                        deferred.resolve({
                            message: 'Successfully get Admin',
                            data: record
                        });
                    }

                }
            });
        return deferred.promise;
    }
记录返回空数组。
提前感谢您的帮助

您使用的查询对我来说运行良好并返回对象,请确保在模式中定义admin字段,如下所示:

"admin": [{type: mongoose.Schema.ObjectId }]

以避免管理数组对象为字符串。如果您将
对象(“57508a2a3a0a919c16ace3c0”)
“57508a2a3a0a919c16ace3c0”进行比较,它将返回空数组,请检查并重播给我,谢谢。

您使用的查询对我来说运行良好并返回对象,请确保您在架构中定义了如下管理字段:

"admin": [{type: mongoose.Schema.ObjectId }]

以避免管理数组对象为字符串。如果您将
对象(“57508a2a3a0a919c16ace3c0”)
“57508a2a3a0a919c16ace3c0”进行比较,它将返回空数组,请检查并重播给我,谢谢。

我不确定您如何定义学校架构,但如果您将
id
作为字符串保存在
admin
数组中,您不需要在mongoose查询中更改为Object

School.find({
  _id: "574f1f979f44e7531786c80f",
  admin: {
    $in : ['57508a2a3a0a919c16ace3c0']
  }
}, functin (err, record) {
...
})

我不确定如何定义学校模式,但如果要在
admin
数组中将
id
保存为字符串,则无需在mongoose查询中更改为Object

School.find({
  _id: "574f1f979f44e7531786c80f",
  admin: {
    $in : ['57508a2a3a0a919c16ace3c0']
  }
}, functin (err, record) {
...
})

'var SchoolSchema=new Schema({name:{type:String,required:true,unique:true},branch:{type:String},location:{type:String},block:{type:Boolean},webURL:{type:String},在:{type:Number}创建,在:{type:Number},更新:{type:Number},学生:{type:Array},教师:{type:Array},admin:{type:Array},class:{type:Array}});“这是我的模式,我尝试了ObjectID和简单id字符串来查找管理员。但是它不起作用”var SchoolSchema=new模式({name:{type:string,required:true,unique:true},分支:{type:string},位置:{type:string},block:{type:Boolean},webURL:{type:String},创建:{type:Number},更新:{type:Number},学生:{type:Array},教师:{type:Array},管理员:{type:Array},班级:{type:Array})在我的模式中,我尝试了ObjectID和简单id字符串来查找管理员。但是它不起作用