鍍金池/ 問答/數(shù)據(jù)庫/ mongoose的count使用

mongoose的count使用

問題描述

在nodejs中使用mongoose

const query=myModel.find({name:'xiaoming'});
const total=query.count();
const data=query.skip(20).limit(10);

為什么這樣寫會(huì)報(bào)錯(cuò)?
正確的寫法應(yīng)該怎樣寫?

回答
編輯回答
氕氘氚

查了下文檔,應(yīng)該是因?yàn)槟氵@是兩次查詢,一次count查詢,一次skip加limit查詢,所以你的query查詢永遠(yuǎn)都是最先指定的count查詢,所以你第二次的結(jié)果其實(shí)就是count返回的結(jié)果,所以是number類型的數(shù)字。

雖然不知道你為啥又不寫回調(diào),又不走Promise形式也能得到結(jié)果。我也就這么寫了~

分兩次查詢就行了,因?yàn)槟愕诙尾樵兪莝kip加limit,所以應(yīng)該沒辦法不走2次查詢又能得出總文檔數(shù)又能得出分頁查詢得結(jié)果。

const query1 = myModel.find({name:'xiaoming'});
const query2 = myModel.find({name:'xiaoming'});
const total = await query1.count().exec(); //所有name為xiaoming的文檔數(shù)量
const data = await query2.skip(20).limit(10).exec();
2017年1月29日 23:24