假设我有这个模式:
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 模式的吗?有人能给我指出正确的方向吗?
1条答案
按热度按时间vcirk6k61#
如果您正在执行一个没有过滤器的查找,那么它将返回所有记录。如果您不希望某些用户(例如那些在“已删除”字段中有日期的用户),那么您需要设置一个过滤器。
find({})等同于select * from table。它返回所有记录而不进行任何筛选。