Mongoose查询:如何传递变量

时间:2013-05-06 14:34:46

标签: node.js find mongoose where

如何在'n'下面传递'5'而非硬编码Xcom.find({ $where : "this.NIC_No == '5'" }

exports.query_by_nic = function ( req, res ){
  var n = req.body.NIC_No;
  console.log(n); //n prints correctly as expected
  Xcom.find({ $where : "this.NIC_No == '5'" }, function ( err, xcoms ){ //works with '5' but how do I query for 'n'?
     res.render( 'query_by_nic', {
        title   : 'Query by NIC',
        xcoms   : xcoms
    });
    console.log(err);
    console.log(xcoms);
  });
};

2 个答案:

答案 0 :(得分:4)

你可以这样做:

Xcom.find({ $where : "this.NIC_No == '" + variableThatContainsNumber + "'" }, function ( err, xcoms ){
    ...
});

甚至更好:

Xcom.find({NIC_No: variableThatContainsNumber}, function(err, doc) {
    ...
});

第二个更好,因为它不需要在MongoDB中执行JavaScript。

答案 1 :(得分:0)

这将有效:

{ $where : "this.NIC_No == '" + n + "'" }

虽然您传递的是用户可以直接设置的值,但这可能不是一个好主意。如果n始终是一个数字,请确保使用以下内容更安全:

 var n = parseInt(req.body.NIC_No, 10);

如果n始终是一个数字,则无需在查询中将其放在引号中:

{ $where : "this.NIC_No == " + n }