我正在使用 mongoose 通過其 id 查找一個用戶,但它無法正常作業。我嘗試了幾種不同的方法,但只得到了錯誤的結果或錯誤。
這是我的代碼。
const { id } = req.params;
const user = await User.findOne({ id });
console.log(id);
console.log(user);
return res.redirect("back");
我嘗試了以下方法
1 -await User.findOne({ id });無論 id 是什么,都回傳第一個用戶。
target id: a8fc083f3f55494fa2cadf9
{
_id: new ObjectId("618fb03e37876d1f0bccb945"),
name: 'bohetefyhy',
email: '[email protected]',
dataRealm: new ObjectId("618fb0119eefb1308fe65610"),
role: 'user',
createdAt: 2021-11-13T12:31:58.846Z,
updatedAt: 2021-11-15T08:03:34.422Z,
__v: 0
}
2 -await User.findOne({ id: id });回傳與上述 (1) 相同的結果。
3 -await User.findOne({ _id: id });給出錯誤。
CastError: Cast to ObjectId failed for value "a8fc083f3f55494fa2cadf9" (type string) at path "_id" for model "User"
at model.Query.exec (C:\Users\khan\Documents\Projects\030FL014_Windshield\app\node_modules\mongoose\lib\query.js:4545:21)
at model.Query.Query.then (C:\Users\khan\Documents\Projects\030FL014_Windshield\app\node_modules\mongoose\lib\query.js:4644:15)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
我還注意到,在結果中有一個mongoose 添加的缺失id欄位。對于_id值是 new ObjectId("618fb03e37876d1f0bccb945" ) 代替簡單的"618fb03e37876d1f0bccb945"
我在用
"貓鼬": "^6.0.12",
MongoDB 5.0.3 2008R2Plus SSL(64 位)
好的,所以我發現了這個問題,我的物件 ID 中只有 23 個字符從一開始就丟失了。但仍然為什么有 id 欄位缺少貓鼬添加以及為什么有 _id 是new ObjectId("618fb03e37876d1f0bccb945" ) 而不是簡單的"618fb03e37876d1f0bccb945"當我登錄時
uj5u.com熱心網友回復:
如果您按 id 搜索,請嘗試這樣做:
const user = await User.findById(id);
uj5u.com熱心網友回復:
Mongoose 的 findById 方法將 id 引數轉換為模型的 _id 欄位的型別,以便它可以正確查詢匹配的檔案。
也嘗試檢查
if (id.match(/^[0-9a-fA-F]{24}$/)) {
// Yes, it's a valid ObjectId, proceed with `findById` call.
}
或者
var mongoose = require('mongoose');
mongoose.Types.ObjectId.isValid('your id here');
uj5u.com熱心網友回復:
嘗試:
await User.findOne({ _id: mongoose.Types.ObjectId(id) });
uj5u.com熱心網友回復:
我遇到了同樣的問題,這就是我如何解決獲取我正在尋找的 Id 資料的方法。
const ObjectId = require('mongodb').ObjectId;
const id = '61929f3efc232d63cd9dcb6b';
user.findOne({ _id: ObjectId(id) })
.then((result) => {
console.log(result);
})
.catch((err) => {
console.log(err);
});
這是我擁有的用戶資訊資料
用戶資訊資料
輸出:
{
_id: new ObjectId("61929f3efc232d63cd9dcb6b"),
name: 'Ibrahem',
email: '[email protected]',
age: 24,
createdAt: 2021-11-15T17:56:14.089Z,
updatedAt: 2021-11-15T17:56:14.089Z,
__v: 0
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/357785.html
標籤:javascript 节点.js MongoDB 表达 猫鼬
