1
如何通過使用貓鼬的'findOne'/'find'功能,我可以找到一個特定的文檔,其結果是通過一個虛擬的字段來過濾的,而虛擬的字段在物理上並沒有出現在數據庫中?如何查找MongoDB文檔,通過貓鼬虛擬字段查詢?
我會嘗試進一步解釋:
在我的「用戶」的模式,我有一個名爲「電子郵件」字段。我想爲我的nodejs應用程序中的其他功能(主要是登錄驗證和內容)創建'email'的別名作爲'userkey'。
要創建別名,我這樣做:
userSchema.virtual('userkey').get(function()
{
return this.email;
});
現在,我創建的別名後,我想我過濾搜索結果的方式如下:
restApi.post('/login', function (req, res) // (using expressjs)
{
User.findOne({'userkey': req.body.userkey}).exec(..);
}
哪有我有效地做到了這一點,並且沒有創建更多的方法\領域等來節省時間和內存?
別名非常重要,因爲在未來的應用程序中,我將添加更多登錄方式,並且希望能夠快速切換與'userkey'關聯的字段。這個別名節省了改變整個應用程序的麻煩(這是一個巨大的編程原則),並且可以幫助我添加更多將來需要的邏輯。
哦,是否有一個我可以實現的已知解決方法?或者至少有另一種方法來爲字段創建別名? –
只有當您將值存儲在文檔中時... – Alex
好的謝謝。我會標記這個答案,因爲我只能假設除此之外別無他法。 –