2017-09-25 69 views
0

我正在尝试创建一个待办事项列表,其中我正在使用mlab作为我的数据库提供程序。通过_id在express和mongodb中获取文档

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)发现的输出()。指定者()

(2)为得到更新和我收到任务的ID在URL路径PARAMS。

(3)是我运行这个findOne语句后。 。

更新功能 - >根据ID

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

我得到null作为值获取任务(注:我硬编码进行确认的值)。

让我知道为什么我得到null为id匹配(你可以参考1)。

任务-2

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

回答

1

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

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

关于更新,你有某种特别麻烦? documentation有很多关于你应该发送的查询结构的信息:)

+0

一般来说正确的。但是可以将任何唯一值赋值为document._id。当然,大多数情况下,这个字段是用Nicolas解释的ObjectIds填充的。 https://docs.mongodb.com/manual/core/document/#document-id-field –

+0

我试过这有一个错误。打扰一下。我明天会更新截图。 –

+0

我错过了这一行var ObjectId = require('mongodb')。ObjectID;所以它给了我错误。感谢您的努力。 –