簡體   English   中英

express.js + mongoose:回退到不正確的 ID?

[英]express.js + mongoose: Fallback on incorrect ID?

我將 express.js 與 mongoose 一起用於 mongoDB 訪問。 如果有人輸入不存在的 url(基於 user_id),我嘗試實施后備。 這是代碼:

app.get('/track/:id', function(req, res) {
var user_id = req.params.id;
User.findById(user_id, function(err, user_) {
    if (!err) {
        res.render('track', { pins: user_.pins, layout: false });
    } else {
        res.send("FAIL! " + err);
    }
});
});

當訪問http://foo.bar/track/1234並且 1234 不存在時,它應該打印出 FAIL,。 如果 id 存在,它應該從數據庫中獲取它的內容(這實際上有效):這是我現在輸入不正確的 id 時得到的(應用程序崩潰):

/home/node/node-service/releases/20110530081158/server.js:112
            res.render('track', { pins: user_.pins, layout: false });
                                             ^
TypeError: Cannot read property 'pins' of null
    at /home/node/node-service/releases/20110530081158/server.js:112:46
    at /home/node/.node_libraries/.npm/mongoose/1.3.6/package/lib/mongoose/query.js:778:22
    at [object Object].<anonymous> (/home/node/.node_libraries/.npm/mongoose/1.3.6/package/support/node-mongodb-native/lib/mongodb/collection.js:462:35)
    at [object Object].emit (events.js:67:17)
    at [object Object].<anonymous> (/home/node/.node_libraries/.npm/mongoose/1.3.6/package/support/node-mongodb-native/lib/mongodb/db.js:94:12)
    at [object Object].emit (events.js:64:17)
    at Socket.<anonymous> (/home/node/.node_libraries/.npm/mongoose/1.3.6/package/support/node-mongodb-native/lib/mongodb/connection.js:86:16)
    at Socket.emit (events.js:64:17)
    at Socket._onReadable (net.js:671:31)
    at IOWatcher.onReadable [as callback] (net.js:177:10)

對於不存在的 ID 不返回任何數據是正常操作,而不是錯誤,因此沒有設置 err。

嘗試將if (!err)更改為if (!err && user_)

嘗試切換回調參數 >

User.findById(user_id, function(user_, err ) {
    if (!err) {
        res.render('track', { pins: user_.pins, layout: false });
    } else {
        res.send("FAIL! " + err);
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM