1

我如何通过而不是在下面'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);
  });
};
4

2 回答 2

4

你可以这样做:

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

甚至更好:

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

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

于 2013-05-06T14:46:36.093 回答
0

这将起作用:

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

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

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

如果n总是一个数字,您也不需要在查询中将其放在引号中:

{ $where : "this.NIC_No == " + n }
于 2013-05-06T14:43:47.873 回答