mongodb ObjectId找到sails,返回所有数据

时间:2017-09-01 07:22:33

标签: angularjs mongodb sails.js sails-mongo

在我的sails控制器中,我实现了一个查找用户的功能。但是当我尝试使用ObjectId进行搜索时,它会返回所有数据。我找不到任何理由。但是当我创建一个新的单独字段作为" userID",并找到使用" userID"时,它就有效。我认为问题是使用" ObjectId"可能是什么问题。

wamp

Json数据:在控制台中打印。

module.exports = {

    updateOrders : function(req,res){

    var ObjectId = require('mongodb').ObjectID;
    console.log("req " + req);
    var data = req.body;
    var obj = [];


console.log("\ndata "+(data));

var jdata = JSON.stringify(data);
console.log("\njdata: "+jdata);

    data.forEach(function(orders){

        var objid = ObjectId(orders.id);
        console.log("Obj orders id  :" + objid);


        ApplicationOrder.find({id: ObjectId(orders.id)}).exec(function (err, order) {

            if (err){
                return done(err);
            }

            console.log('order ' + order);
             obj.push(order);
        });


    })
        res.send(obj);




        }


};

3 个答案:

答案 0 :(得分:1)

对于标准的sails.js / waterline查询,您必须在查询参数中使用id作为字符串,不要使用ObjectId(ordersId)

使用sails原生查询时,请使用ObjectId(ordersId)

答案 1 :(得分:1)

如果你使用任何mongodb适配器,那么不要尝试通过ObjectId(orders.id)转换id。尝试正常查询,如

 ApplicationOrder.find({'id':orders.id})

对于本机风帆查询,您必须将id转换为objectId。

答案 2 :(得分:0)

我终于能够解决这个问题了。我必须在帆中编辑我的模型类,并且只使用 orders.id 模型类,

_id:{type : 'objectid'}以及搜索

.find({_id: orders.id})

这对我很有用。