查找不存在的值時會拋出mongoosefindOne查詢。
我很確定它應該回傳或清空陣列而不是拋出錯誤。Interal Server Error (500)null
貓鼬版:^5.8.7
第一次嘗試
router.get('/:myId', async(req, res, next) => {
const myId = req.params.myId;
await myDocument.findOne({ _id: myId }, (err, myData) => {
if (!myData) {
res.status(404).render('404');
} else {
res.render('myPage', myData);
}
}).exec()
});
第二次嘗試
router.get('/:myId', async(req, res, next) => {
const myId = req.params.myId;
const myData = myDocument.findOne({_id: myId}).exec();
if (myData) {
//render normal page
}
// render 404 page
});
根據檔案,這不應該發生。
注意:conditions是可選的,如果conditions為null或undefined,mongoose會向MongoDB發送一個空的findOne命令,MongoDB會回傳一個任意檔案。如果您按 _id 查詢,請改用 findById()。
還嘗試使用findById()and find()。所有情況都一樣。
當我傳遞一個有效的 ID 引數時,它作業得很好。
如果集合中不存在 ID,如何在不引發 http 錯誤的情況下搜索資料?
uj5u.com熱心網友回復:
router.get('/:myId', async(req, res, next) => {
你應該檢查你的路線
uj5u.com熱心網友回復:
你應該試試這段代碼。首先在呼叫依賴項的頂部分配 ObjectId。MongoDB id 不是字串。建議傳遞 ObjectId。
const { ObjectId } = require('mongodb');
router.get('/:myId', async(req, res, next) => {
const myId = ObjectId(req.params.myId);
const myData = await myDocument.findOne({_id: myId}).exec();
if (myData) {
//render normal page
}
// render 404 page
});
uj5u.com熱心網友回復:
該錯誤實際上是在頁面呈現期間發生的。事實上,mongoose在這種情況下不會引發任何錯誤。
我試圖html在設定ejs為View Engine.
顯然我們不能混用東西。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/480722.html
上一篇:僅使用一種方法更改不同的按鈕文本
