【发布时间】:2021-07-06 06:54:40
【问题描述】:
我正在尝试删除在 MongoDB 数据库中创建的引用。为了更好地理解,我有两个模型,用户和身份验证。每次创建用户时,都会创建身份验证作为参考,并将其值保存在电子邮件字段中。 一切正常,问题是当我尝试删除用户时,引用仍然在同一个地方。
这些是我的模型、用户和身份验证:
import { Schema, model } from 'mongoose'
const stringRequired = {
type: String,
trim: true,
required: true
}
const stringUnique = {
...stringRequired,
unique: true
}
const UserSchema = new Schema({
name: stringRequired,
username: stringUnique,
email: stringUnique,
}, { timestamps: true });
const userModel = model('User', UserSchema)
const AuthSchema = new Schema({
email: { type: Schema.Types.ObjectId, ref: 'User' },
salt: stringRequired,
hash: stringRequired,
}, { timestamps: true })
const authModel = model('Auth', AuthSchema)
export { userModel, authModel }
在互联网上搜索我遇到了一个假设的解决方案:
UserSchema.pre('deleteOne', function () {
const user = this
user.model('AuthSchema').deleteOne({ email: user._id})
})
在 mongoose 文档中,它说它是一种执行预防措施的 prehook。这对我来说很有意义,因为根据代码,引用(auth)被删除,然后是对象(用户)。不幸的是,它并没有解决我的问题。有人可以帮帮我吗?
【问题讨论】:
标签: node.js mongodb mongoose reference nosql