express js使用mongose获取数据



我正在尝试使用MongoDB(mongoose(中的id查找数据。我已经检查了req.parms.id中的";字符串";和长度";24〃;。如果长度不匹配,则显示检查消息。但有些id给我提供了数据,显示没有数据,有些时候显示服务器错误。

这是用于检查parms id 的代码

export const donarDetailsMiddleware: RequestHandler = (req, res, next) => {
const donarId = typeof req.params.donar === 'string' && req.params.donar.length === 24 ? req.params.donar : false;
if (donarId) next();
else res.status(400).json({ message: 'invalid donar id' });
};
export const showDonarDetailsHandler: RequestHandler = async (req, res, next) => {
try {
const getDonarDetails = await DonarModel.find({ _id: req.params.donar });
if (getDonarDetails && getDonarDetails.length === 1) {
res.status(200).json({ message: 'donar fetch success', donar: getDonarDetails[0] });
}
else {
res.status(200).json({
error: "no donar found",
});
}
}
catch (err) {
res.status(500).json({
error: "There are server error !!!!",
err
});
}
};

提供";63124b286a250a870ec4b43k";id,这显示了这个错误

{
"error": "There are server error !!!!",
"err": {
"stringValue": ""63124b286a250a870ec4b43k"",
"valueType": "string",
"kind": "ObjectId",
"value": "63124b286a250a870ec4b43k",
"path": "_id",
"reason": {},
"name": "CastError",
"message": "Cast to ObjectId failed for value "63124b286a250a870ec4b43k" (type string) at path "_id" for model "Donar""
}
}

为此";63124b286a250a870ec4b43a";它显示无数据的预期消息

并且对于这个id";63124b286a250a870ec4b43c";它正确地显示了我的数据。

问题出在哪里?

MongoDB ObjectID是12字节的值,由24个字符的十六进制字符串表示

^[a-f0-9]{24}$

包含k的字符串无效,不能强制转换为Mongoose ObjectID类型。

最新更新