2017-06-05 170 views
0

我正在嘗試使用express和mongodb構建一個簡單的CRUD應用程序。我所有的數據庫條目的GET請求正在工作,我的POST請求正在工作,但我似乎無法弄清我的GET請求單個條目的問題。GET請求返回null的特定ID

Server.js GET請求:

app.get('/api/:id', function (req, res) { 
    var id = req.params.id; 

    db.collection('api').findOne({_id: id}, (err, result) => { 
    if (err){ 
     res.sendStatus(404); 
     return console.log(err); 
    } 
    res.redirect('/'); 
    return console.log(result); 

    }); 

}); 

當我鍵入 'URL/API/593555074696601afa192d7f' 這是一個ID,我知道存在的console.log被返回null,我不知道如果我米做錯了什麼?

+0

嘗試打開調試模式並檢查確切的查詢。似乎你是直接使用MongoDB驅動程序的節點。 http://mongodb.github.io/node-mongodb-native/2.0/tutorials/logging/#setting-log-level:3f3af53408cff75953b33723c0b061bb – Anand

+0

謝謝,輸出至少爲1000線,尤其我應該尋找什麼? – Matt

+0

的可能的複製(https://stackoverflow.com/questions/4902569/node-js-mongodb-select-document-by-id-node-mongodb [node.js中的MongoDB通過\ _id節點mongodb的天然選擇文件] -native) – Veeram

回答

1

你應該在查詢傳遞ObjectID實例。

let ObjectID = require("mongodb").ObjectID; 

app.get('/api/:id', function (req, res) { 
    var id = req.params.id; 

    db.collection('api').findOne({_id: ObjectID(id)}, (err, result) => { 
    if (err){ 
     res.sendStatus(404); 
     return console.log(err); 
    } 
    res.redirect('/'); 
    return console.log(result); 

    }); 

}); 

給試試。如果你的模型變得複雜,它可能會有所幫助。

+0

真棒,工作,謝謝!我已經涉足貓鼬,但我希望首先更好地瞭解基礎技術,然後我將開始介紹像貓鼬這樣的東西,以便我能夠欣賞它們提供的幫助。 – Matt