我需要为对象字段分配随机数,然后检查数据库中是否存在这样的对象。如果不保存,则分配新的随机值并再次检查数据库,依此类推。我知道问题是由同步引起的,但我不知道如何解决。
while (controller = 0) {
var x = Math.floor((Math.random() * 10) + 1);
Model.findOne({'x': x}, function(err, result) {
if (err) throw err;
if (!err && !result) controller = 1;
else controller = 0;
});
}
最佳答案
警告:我不知道您的案例的详细信息,但您的方法可能会显着降低性能。特别是对于随机数较大的 MAX_VALUE。
要解决异步回调的问题,您可以定义一个函数并递归调用它:
function saveIfNotExists() {
var x = Math.floor((Math.random() * 10) + 1);
Model.findOne({'x': x}, function(err, result) {
if (err) throw err;
if (!result) {
// save object here
} else {
saveIfNotExists();
}
});
}
关于javascript - MongoDB 查询结果作为循环 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28126759/