可以'随机填充'吗?
示例
.populate({
path: 'path',
options: {limit: 2}
});
“示例”始终返回相同的2个项目。始终是阵列中的最后两个项目
是否可以使用.populate()
返回随机项?怎么做?
答案 0 :(得分:1)
用户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}
});
})