如何解决express.js +猫鼬:回退不正确的ID?
| 我使用express.js和mongoose进行mongoDB访问。如果有人输入不存在的网址(基于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\',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);
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。