簡體   English   中英

貓鼬聚合在沒有find()的情況下無法工作

[英]Mongoose Aggregate doesn't work without find() first

不知道到底發生了什么,但是我有一個Model#aggregate()調用在它以Model#find()開頭時可以正常工作,但不是這樣。 這是我正在使用的代碼(具有虛擬屬性, Thing是我的模型對象):

var query = { my_ids: { $in: _.pluck(this.related_ids, 'my_ids') } };

// This Thing.find is never executed and shouldn't ever be needed.
Thing.find(query);

Thing.aggregate([
    { $match: query },
    { $group: { _id: null, "amount": { "$sum": "$amount" } } },
]).exec(function(error, result) {
    // blah blah blah
});

按原樣運行時,它按預期方式工作-回調的結果按預期是[{ _id: null, amount: <some number> }] 但是,如果Thing.find(query); 被注釋掉,它只是一個空白數組[]

我知道Thing.find()返回的是Query對象,並且可能在后台設置了一些狀態,這可能使aggregate()調用完成,但是在執行查詢時它也不起作用(我將d假設將重置這些狀態變量)。 我現在很高興留下Thing.find(query)調用以使其正常工作,但是確實使我的眼睛有些抽搐。 有什么想法嗎?

找到了它,這是一個愚蠢的解決方案,但是最好在SO上找到類似問題的答案。

問題: 比賽條件 第二個我在使用Node.js時看到“這東西似乎影響了無關的東西”,那是我的主意。 此代碼在某些對象填充到數據庫中的代碼之后(在測試中)立即發生,並且發生了一些未被捕獲的驗證錯誤。 在任何情況下,對象都不會保存到數據庫中,因此Thing.find()調用稍有延遲,這將延遲聚合,直到將其保存為止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM