所以我有一個問題,我的 user._id 匹配,"61a242dffecd0e0f7b3e36b8"但它總是選擇else我做錯了什么?
const user = await User.findById(req.params.id);
if ("61a242dffecd0e0f7b3e36b8" === user._id) {
res.send("hello");
} else {
return res.send({ message: "access denied" });
}
此外,該字串與 user._id 匹配,當我console.log(user._id)回傳時:
new ObjectId("61a242dffecd0e0f7b3e36b8")
此外,這確實與 user._id 匹配,但同樣沒有選擇 if 陳述句
uj5u.com熱心網友回復:
那是因為您使用的是嚴格相等===并且型別不相等。回傳user._id的型別為 mongoose.Types.ObjectId(或類似的東西)。mongoose.Types.ObjectId 確實有一個toString()方法,所以如果你 console.log 它,它似乎是一個字串。嘗試這個:
const user = await User.findById(req.params.id);
if ("61a242dffecd0e0f7b3e36b8" === user._id.toString()) {
res.send("hello");
} else {
return res.send({ message: "access denied" });
}
uj5u.com熱心網友回復:
您可以在檢查ObjectId前將要檢查的 ID 包裝起來。
這是一個可以作業的片段
const { ObjectId } = require('mongoose').Types
const user = await User.findById(req.params.id);
if (ObjectId("61a242dffecd0e0f7b3e36b8") === user._id) {
res.send("hello");
} else {
return res.send({ message: "access denied" });
}
uj5u.com熱心網友回復:
const user = await User.findById(req.params.id);
if(user == null) throw new Error("User Not Found");
if (user._id.toString() === "61a242dffecd0e0f7b3e36b8") {
res.send("hello");
} else {
return res.send({ message: "access denied" });
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/368206.html
標籤:javascript 节点.js MongoDB 猫鼬
下一篇:如何使變數唯一?
