我希望在字段中填充详细信息.location.displayAddress'每次请求文档时使用一些逻辑。这可能吗?想避免在我的模型中存储冗余数据。
在我的Venue Controller中,我有40多个不同的调用此模型。我想避免在返回的每个文档上手动调用getShortName()。有没有办法自动运行此函数并在模型中定义此逻辑而不是控制器?
这是这个模型:
declare @year int
set @year = YEAR(GETDATE())
;with mths as(
select 1 as mth, DATENAME(MONTH, cast(@year*100+1 as varchar) + '01') as monthname
union all
select mth+1, DATENAME(MONTH, cast(@year*100+(mth+1) as varchar) + '01') from mths where mth<MONTH(GETDATE())
)
select m.mth Month, isnull(count,0) as Count
from mths m
left join (
select MONTH([createdDate]) as Month,COUNT([id]) as Count
from [Notifications]
where YEAR([createdDate]) = @year
group by MONTH([createdDate])
) s on m.mth = s.Month
答案 0 :(得分:2)
您想要的是架构上的.virtual()
方法,该方法将根据定义为在方法中返回的文档的其他属性在文档中显示该属性:
VenueSchema.virtual('details.displayAddress').get(function() {
return this.name + this.location.unit + ' ' + this.details.location.floor ...etc
});
它没有设置&#34; perperntly&#34;在对象中但可访问并可在需要时序列化(默认)。
它实际上在实例方法后面this page进一步列出了一点。不像&#34; getters / setters&#34;数据不存储在集合对象中。