【发布时间】:2018-09-10 16:07:49
【问题描述】:
可以“随机填充”吗?
示例
.populate({
path: 'path',
options: {limit: 2}
});
“示例” 总是返回相同的 2 个项目。始终是数组中的最后 2 项。
是否可以使用.populate() 返回随机项目?怎么制作?
【问题讨论】:
标签: javascript mongoose populate mongoose-populate
可以“随机填充”吗?
示例
.populate({
path: 'path',
options: {limit: 2}
});
“示例” 总是返回相同的 2 个项目。始终是数组中的最后 2 项。
是否可以使用.populate() 返回随机项目?怎么制作?
【问题讨论】:
标签: javascript mongoose populate mongoose-populate
用户javascript'Math.random 和Math.floor
random() 方法返回一个随机数,从 0(含)到 但不包括 1(独占)。
更多细节和例子:https://www.w3schools.com/js/js_random.asp
所以在1 和20 之间有一个随机限制:
var myLimit = Math.floor(Math.random() * (20 - 1) + 1);
.populate({
path: 'path',
options: {limit: myLimit}
});
编辑
如果你想每次返回2随机项目,使用skip:
var myRandom = Math.floor(Math.random() * (20 - 1) + 1);
.populate({
path: 'path',
options: {limit: 2, skip:myRandom}
});
但这会在第一个 20 中选择两个随机记录,更准确地说,您需要计算所有记录,然后生成一个介于 1 和该计数之间的随机数:
yourModel.count({}, function( err, count){
var myRandom = Math.floor(Math.random() * (count - 1) + 1);
// your old code ..
.populate({
path: 'path',
options: {limit: 2, skip:myRandom}
});
})
【讨论】: