首页 > 解决方案 > findOne 在 Nodejs 中发送 NULL

问题描述

我想使用 findOne 在我的数据库中呈现产品。我得到了在我的 url 中传递的 id,以通过它的 id 来查找产品。

然而,我得到null了结果。

这是我的server.js文件。

app.get('/boutique/:id', (request, reponse) => {
    mongo.connect(url, function (err, db) {
        var dbo = db.db("pool");
        var cherche_id = request.params.id;

        dbo.collection("products").findOne({id : cherche_id}, function(err, result) {
            if (err) throw err;
            console.log(result);
            reponse.render('boutique_id');

            db.close();
        });
    });
});

如果我像这样更改我的 findOne ,它也可以工作:

findOne({id : 2},

标签: javascriptnode.jsdatabasemongodb

解决方案


request.params.id是一个字符串,而id数据库中的字段是一个数字。MongoDB 首先比较类型,所以"2"不等于2. 您需要先将值转换为数字:

var cherche_id = +request.params.id;

编辑:在这种情况下,一元加运算符将字符串转换为数字


推荐阅读