在express和mongodb中通过_id获取文档

时间:2017-09-25 17:38:29

标签: mongodb express

我正在尝试创建一个待办事项列表,我使用mlab作为我的数据库提供程序。

tasks = db.connect().collection('tasks');
tasks.find().toArray(function (err, result) {
            console.log("result", result) // giving me result
            if(err) throw err;
             res.render('tasks/index', {title:"Tasks",tasks:result});
         })

附件是在控制台中输出的所有路线的一个单一镜头。enter image description here

在图像(1)中是find()。toArray()

的输出

(2)获取更新,我在url route params中获得任务的id。

(3)是在我运行这个findOne之后。

更新功能 - >根据id

获取任务
tasks.findOne({"_id":"59c91fbb4b262004f059f67f"}, function(err, task){
        console.log(err)
        console.log(task)
        res.render('tasks/update', {title:"Update"});
    });

我的值为null。(注意:我很难对确认值进行编码)。

让我知道为什么我在id匹配时得到null(你可以从1中引用)。

任务-2

此外,如果我想更新,我如何发送更改后的值。

1 个答案:

答案 0 :(得分:2)

关于您的第一个问题,在_id与Mongo匹配时,您需要将搜索条件定义为ObjectId:

tasks.findOne({"_id":ObjectId("59c91fbb4b262004f059f67f")}, function(err, task){
        console.log(err)
        console.log(task)
        res.render('tasks/update', {title:"Update"});
    });

关于更新,您是否遇到某种麻烦? documentation有大量关于您应该发送的查询结构的信息:)