如何重写mongoose模式

gab6jxml  于 2022-11-13  发布在  Go
关注(0)|答案(1)|浏览(117)

假设我有这个模式:

const userSchema = new Schema({
    name: {type: String},
    email: {type: String},
    created: {type: Date,default: Date.now},
    deleted: {type: Date,default: undefined}
});

我又加了几行:

const user1 = new User({name: 'bob',email: 'bob@google.com'}); 
const user2 = new User({name: 'mary',email: 'mary@google.com'}); 
const user3 = new User({name: 'alice',email: 'alice@google.com'});

当呼叫

User.find({});

我将获得上面的所有三个用户。
然而,我想添加一个函数,以软的方式删除它们。这就是为什么我有字段“删除”。通过这样做:

const user = User.find({email: 'bob@google.com'});
user.deleted = Date.now();

在mongo中,用户bob将删除字段NOT undefined。
如果我现在再这样称呼:

User.find({});

Bob也将被交付。当然我可以像这样直接添加标志:

User.find({deleted: undefined});

但是如果所有的数据库都想应用这个原则,我想把这个功能集中化会更好。
这是关于覆盖 Mongoose 模式的吗?有人能给我指出正确的方向吗?

vcirk6k6

vcirk6k61#

如果您正在执行一个没有过滤器的查找,那么它将返回所有记录。如果您不希望某些用户(例如那些在“已删除”字段中有日期的用户),那么您需要设置一个过滤器。
find({})等同于select * from table。它返回所有记录而不进行任何筛选。

相关问题