我在应用中为一个集合定义了多个模型:培训生、员工、承包商、经理和被免职人员。
每个模型模式都有一个日期属性,表示人“进入”模型所表示的状态的时间:
const TraineeSchema = new Schema({
...
accetedOn: Date,
...
});
const EmployeeSchema = new Schema({
...
hiredOn: Date,
...
});
const ContractorSchema = new Schema({
...
contractedOn: Date,
...
});
const ManagerSchema = new Schema({
...
promotedOn: Date,
...
});
const RemovedSchema = new Schema({
...
terminatedOn: Date,
...
});
在一种情况下,我执行一个基于这些属性过滤数据的聚合。如果所有这些属性在数据库中具有相同的名称,则代码将更简单。因此,例如,如果所有这些模式的data属性都命名为enteredIntoStatusOn
,则我可以只使用:
{ $match: { enteredIntoStatusOn: { $gt: ... } }
有没有可能在模式中定义一个属性,它在mongoose Document对象中使用时只有一个名称,但实际上在数据库中以不同的名称保存?
我知道我可以使用别名来做类似的事情,例如,我可以使用定义的enteredIntoStatusOn
来定义管理器模式,然后还定义一个名为promotedOn
的虚拟字段,它只获取和设置enteredIntoStatusOn
字段。promotedOn
和enteredIntoStatusOn
都在Manager模型的文档中公开。在Mongoose中是否有方法只使用别名而不使用原始属性?
1条答案
按热度按时间j1dl9f461#
最简单的方法是在模式中指定别名:
这会自动创建getter和setter,因此可以在任何地方使用
name
而不是n
。