gpt4 book ai didi

javascript - 比较 Express User 与 Mongoose 外键

转载 作者:行者123 更新时间:2023-12-03 01:06:55 32 4
gpt4 key购买 nike

我的 Mongoose 模型包含模型用户的外键。如果传入 put、post 或 delete 请求,我想检查当前经过身份验证的用户的主 ID 是否与外键相同。

如果我记录 ID,它们是完全相同的,但代码似乎不同。有人可以告诉我正确的方法吗?提前致谢。

型号

mongoose.model(
'MyModel',
mongoose.Schema({
user: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
required: true
},
...
})
)

快速路线

router.put('/models/:id', auth, (req, res, next) => {
MyModel.findById(req.params.id, (err, model) => {
if (err) return res.status(500).send({success: false, msg: 'Model not found'});
if (req.user._id !== model.user) return res.status(500).send({sucess: false, msg: 'You did not create this model'});

...success...
});
});

最佳答案

在模型中,您将用户存储为 ObjectId ,并且每当您将其与中的用户匹配时,

if (req.user._id !== model.user)

它总是返回 true,因为 req.user._id 是字符串类型,而 model.user 具有 ObjectId 类型。就像

if ("5b9b69933fc1de058a4086ed" !== ObjectId("5b9b69933fc1de058a4086ed")

您可以通过将用户 ID 转换为 ObjectId 类型来比较它们。

import mongoose from 'mongoose';

if (!new mongoose.Types.ObjectId(user._id).equals(model.user))

关于javascript - 比较 Express User 与 Mongoose 外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52357174/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com