RISEBY
2023-08-24 10:29:14
我正在開發(fā)一個節(jié)點應(yīng)用程序。所有路線似乎都有效,直到我添加app.get('/clients/:id',async (req, res) => { const client = await Client.findById(req.params.id); res.render('clients/show', {client});});當(dāng)我注釋掉 id 路由時,新路由將按預(yù)期工作。但是當(dāng)它在那里時,我嘗試點擊“新路線”:app.get('/clients/new', (req, res) => { res.render('clients/new')});我收到以下錯誤:(節(jié)點:17216)UnhandledPromiseRejectionWarning:CastError:對于模型“Client”的路徑“_id”處的值“new”,轉(zhuǎn)換為 ObjectId 失敗這是我的架構(gòu): const mongoose = require('mongoose'); const { Schema } = mongoose; const ClientSchema = new Schema({ company: String, contact: String, phone: Number, email: String, city: String, state: String, zip: Number, accounts: [ { type: Schema.Types.ObjectId, ref: 'Account', }, ] }); module.exports = mongoose.model('Client', ClientSchema);我似乎在這里找不到問題,任何幫助將不勝感激。
1 回答

qq_笑_17
TA貢獻1818條經(jīng)驗 獲得超7個贊
您正在執(zhí)行app.get('/clients/new')
into path?/clients/:id
,因此在您的控制器中,req.params.id
值是new
。
那么你正在做的const client = await Client.findById(req.params.id);
。
也就是說:您正在嘗試查找 _id 為“new”的文檔。
ObjectId
在 mongo 中有一個特定的格式,“new”不能被轉(zhuǎn)換。這就是拋出異常的原因。
要解決這個問題,您有兩種選擇。修改路徑或修改您將發(fā)送的值。
如果你想要一條帶有“new”的路徑,你可以創(chuàng)建一條新路線,如下所示:
app.get('/clients/new/:id')
并在 path 處發(fā)送 id?clients/new/YOUR_ID
。
其他選項不調(diào)用帶有 的路徑new
。直接打電話/clients/YOUR_ID
。
但請記住發(fā)送有效的 ObectId 格式,這樣req.params.id
您在讀取時就不會遇到錯誤。
添加回答
舉報
0/150
提交
取消