【发布时间】:2018-12-20 13:40:22
【问题描述】:
function get() {
return new Promise(function (resolve, reject) {
Card.find([
{ $sample: {size: 3} },
{ $match: {"deckId": req.body.deckId} }
]).exec(function(err,result){
if(err){
reject(err);
}else{
resolve(result)
}
});
});
}
它给了我所有数据,但我只需要 3 个随机数据。我有谷歌关于获取随机 N 无数据但为什么不为我工作?
【问题讨论】:
-
在这里尝试使用
aggregate而不是find,看看一个非常相似的案例here。 -
@vahdet 但现在 $match 不适合我?
-
deckId: { type: Schema.Types.ObjectId, ref: 'Decks', required: '请提供 Deck' } 我的 deckId 架构
-
new mongoose.Types.ObjectId(req.body.deckId) 解决我的问题
-
永远不要把回调和promise混在一起,你可以简单地
return Card.find(...).exec()返回promise。