const castError=new castError()castError:值的强制转换为ObjectId失败



我发送后请求后显示的错误

我正在创建一个facebook克隆,目前正在处理接受好友请求的路由,这是一种(Post方法(。当我通过邮递员进行测试时,我得到了错误CastError:Cast to ObjectId对于值失败

接受好友请求路由


router.post("/user/acceptMatchrequest", verifyToken, async (req, res) => {
const recipientId = req.user
const senderId = req.body.sender
const updatedSender = await User.findOneAndUpdate(
{ _id: senderId, matches: { $nin: [recipientId] } },
{ $push: { matches: recipientId } },
{ new: true }
)
const updatedRecipient = await User.findOneAndUpdate(
{ _id: recipientId, matches: { $nin: [senderId] } },
{
$push: { matches: senderId },
},
{ new: true }
);
if (updatedRecipient) {
const updatedMatchRequest = await MacthRequest.findOneAndUpdate(
{
sender: senderId,
recipient: recipientId,
},
{
$set: { status: 'accepted' },
$push: { friendshipParticipants: [senderId, recipientId] },
},
{ new: true }
);
const updatedRequests = await MacthRequest.find({
recipient: req.user,
status: 'pending',
});
res.status(200).send({
updatedRequests: updatedRequests,
updatedUserFriendList: updatedRecipient.matches,
});
}
})

我的朋友请求架构

const mongoose = require("mongoose");
const matchRequestSchema = new mongoose.Schema(
{
sender: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
},
recipient: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
},
status: {
type: String,
},
friendshipParticipants: {
type: [mongoose.Schema.Types.ObjectId]
}
},
{
timestamps: true,
}
);
module.exports = mongoose.model("matchRequest", matchRequestSchema);

用户模式

const mongoose = require("mongoose");
const UserSchema = new mongoose.Schema({
email: {
type: String,
required: true,
unique: true
},
password: {
type: String,
required: true,
},
matches: {
type: [mongoose.Schema.Types.ObjectId],
ref: 'User'
},
{
timestamps: true
});
module.exports = mongoose.model('User', UserSchema)

发送邮件请求后的结果

  • const castError=new castError((;CastError:值"转换为ObjectId失败;{用户:'62c1f76928dca4af2ec95010',isAdmin:true,iat:1667490411,有效期:1667494011}"(类型Object(在路径"处;匹配";对于模型";用户";at型号。Query.exec*

在我看来:const recipientId = req.user-req.user不是用户id,而是用户会话对象。因此,它获取了该会话对象(看起来像:{ user: '62c1f76928dca4af2ec95010', isAdmin: true, iat: 1667490411, exp: 1667494011 }(,并试图将其强制转换为ObjectId,但失败了。

我会试试:

const recipientId = req.user.user,它将id设置为发出请求的用户的id,而不是设置为对象。

相关内容

最新更新