Javascript 使用;Mongojs.ObjectID“;在链接到角度控制器的服务器中

Javascript 使用;Mongojs.ObjectID“;在链接到角度控制器的服务器中,javascript,angularjs,node.js,express,mean-stack,Javascript,Angularjs,Node.js,Express,Mean Stack,我正在使用MEAN stack构建一个web应用程序。我正在尝试根据控制器中的参数按ObjectId筛选来自服务器的数据。我的参数适用于键值,例如按名称过滤,但按ObjectID过滤不起作用。我将MongoJS与MongoJS.ObjectID一起使用 Controller.js: Server.js: app.get('/collection',函数(req,res){ if(请求查询id){ find({u id:mongojs.ObjectId(req.query.id)},函数(err

我正在使用MEAN stack构建一个web应用程序。我正在尝试根据控制器中的参数按ObjectId筛选来自服务器的数据。我的参数适用于键值,例如按名称过滤,但按ObjectID过滤不起作用。我将MongoJS与MongoJS.ObjectID一起使用

Controller.js:

Server.js:

app.get('/collection',函数(req,res){
if(请求查询id){
find({u id:mongojs.ObjectId(req.query.id)},函数(err,docs){console.log(docs);res.json(docs);});
}
否则{
find(函数(err,docs){console.log(docs);res.json(docs);});
}
});

由于服务器端函数作为if-else运行,因此在这种情况下,“if”失败,并转到“else”,它将返回所有文档。我几乎尝试过在“id”之前添加“u”和在“id”或“id”中添加/删除引号的所有组合。不同的组合返回了空数组“null”,或者转到了“else”语句。

您正在将
\u id
作为查询参数传递

这就是GET请求的样子:
/收集?\u id=11110000011

但是,您在
if
语句和
find
函数中查看的是
id
,而不是
\u id

所以它应该是这样的:

app.get('/collection', function(req,res) {
    var _id = req.query._id;
    if(_id) {
        db.users.find({_id: mongojs.ObjectId(_id)},function (err, docs) { console.log(docs); res.json(docs); }); 
    }
    else {
        db.users.find(function (err, docs) { console.log(docs); res.json(docs); });
    }
});
app.get('/collection', function(req,res) {
    var _id = req.query._id;
    if(_id) {
        db.users.find({_id: mongojs.ObjectId(_id)},function (err, docs) { console.log(docs); res.json(docs); }); 
    }
    else {
        db.users.find(function (err, docs) { console.log(docs); res.json(docs); });
    }
});