gpt4 book ai didi

javascript - 如何在 Mongoose 中实现一对一的关系和杠杆作用?

转载 作者:行者123 更新时间:2023-12-03 07:36:55 25 4
gpt4 key购买 nike

这是我的用户架构:

const UserSchema: Schema = new Schema({
email: { type: String, maxlength: 255, required: true, unique: true },
password: { type: String, maxlength: 255, required: true },
nickname: { type: String, maxlength: 255 },
last_login: { type: Date },
token: { type: Schema.Types.ObjectId, ref: 'Token' },
});

这是我的 TokenSchema:

const EXPIRES = 1 * 60 * 60;  // set 1 hr
const TokenSchema: Schema = new Schema({
key: { type: String, unique: true},
created_at: { type: Date, expires: EXPIRES , default: Date},
_user: { type: Schema.Types.ObjectId, required: true, ref: 'User' },
});

(1) 保存

如果我有一个用户:Mary,它将获得一个 token 。这是我的方法如下:

mary = new User({email: 'mary@example.com', ...})
token = new Token({_user: mary})
token.save()

是吗?我需要将 token 保存在用户中吗?例如:

mary.token = token;
mary.save()

(2)获取

接下来,我使用 token 的 key 来解析其用户。这是我的方法如下:

let authorization = req.header('authorization');
Token.findOne({key: authorization }).populate('_user').exec(cb)

对吗?

最佳答案

请参阅population doc ,您可以尝试按如下方式保存文档

1) 保存

var token = new Token({_user: mary});
token.save(function(err) {
if (err) return err;

var mary = new User({
email: 'mary@example.com',
// ...
token: token._id // assign token id to user
});
mary.save(function(err) {
if (err) return err;

Token.update({_id: token._id},
{_user: mary._id}, // update token with user id
function(err) { });
});
});

2)您使用的Get方法似乎是正确的。

关于javascript - 如何在 Mongoose 中实现一对一的关系和杠杆作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35574244/

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