【发布时间】:2015-06-20 08:23:38
【问题描述】:
我已经通过以下查询成功地在 mongo CLI 中查询了我要执行的操作。
db.catches.find({'weightTotal': {'$gte' : 150} })
但是,当我尝试将查询从角度发送到这样的路线时(更具体一点):
Hatchery.getByLocation(
{
'x': $scope.y.x._id,
'city': place.data[0].city,
'weightTotal': {'$gte' : 150 }
})
当猫鼬发生故障时,我得到了通常的错误:
TypeError: Cannot call method 'toString' of undefined
at ServerResponse.writeHead (http.js:1180:45)
at ServerResponse.writeHead (/Users/ShiftedRec/x/y/node_modules/express-session/node_modules/on-headers/index.js:53:19)
但更具体地说(控制台记录错误)
{ message: 'Cast to number failed for value "{"$gte":150}" at path "weightTotal"',
name: 'CastError',
kind: 'number',
value: '{"$gte":150}',
path: 'weightTotal' }
我已经通过在路由中执行.where 来实现此功能,但我宁愿将所有内容都放入查询中。如果我只是将我需要的内容传递到查询中,而不是根据权限等执行条件 where 语句,它可以让我的路线更整洁。
查询传递到的路由如下所示:
router.get('/', function (req, res, next) {
User
.find(req.query)
.populate('post')
.exec(function (err, data){
if (err) return next(err);
res.json(data);
});
});
req.query 控制台登录到这里:
{ x: '5581efdcc465c1ccd97a1f6b',
y: '5581efe2458256f5d9848ca7',
weightTotal: '{"$gt": 150}' }
我使用的是 Mongoose 4.0.1。 有什么想法吗?
【问题讨论】:
-
如果没有负责查询数据库的 node.js 代码,这很难说。
-
更多代码会有所帮助
-
抱歉,添加了执行查询的路由
标签: angularjs node.js mongodb mongoose