如何在节点js中使用where函数

时间:2017-06-16 12:58:25

标签: javascript node.js mongoose

我正在尝试注入NoSql数据库。

我在网上搜索试图了解要做什么,以便注入一个用HTML编写的简单表单和node.js中的服务器端。 所以通常当我需要从mLab中的数据库中获取数据时我只使用查询mycollection.find({name:req.body.name}),但据我所知(如果我错了请纠正我,因为我'我不确定)我需要使用where函数,因为使用这个函数很容易注入我的数据库。

这就是我做的事情

exports.getDetails = function(req, res){
    var myuser = req.body.user;
    login.findOne({ $where : {name: myuser} }, function(err, docs){
        console.log(docs);
    });
}

但功能在哪里不起作用..我做错了什么?

2 个答案:

答案 0 :(得分:0)

使用以下代码段。这将有效。

exports.getDetails = function(req, res){
    var myuser = req.body.user;
    login.find({ $where : {name: myuser}}).toArray(function(err, docs){
    console.log(docs);
});
}

答案 1 :(得分:0)

来自$where的官方Mongo文档:

  

使用$ where运算符将包含JavaScript表达式或完整JavaScript函数的字符串传递给查询系统。 $ where提供了更大的灵活性,但要求数据库处理集合中每个文档的JavaScript表达式或函数。使用this或obj。

在JavaScript表达式或函数中引用该文档

在您的代码中,您发送的对象是错误的(您只能将Javascript表达式作为字符串或函数发送)。根据你的例子,我认为你不需要$ where。如果你想得到一个用户,就这样做:

login.findOne({name: 'enterNameHere'},function(err, user){
     console.log(user);
});

您可以在文档(页面底部)

中找到$ where的示例