javascript - MongoDB 查询结果作为循环 Controller

标签 javascript loops synchronous

我需要为对象字段分配随机数,然后检查数据库中是否存在这样的对象。如果不保存,则分配新的随机值并再次检查数据库,依此类推。我知道问题是由同步引起的,但我不知道如何解决。

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/

相关文章:

javascript - 如何在评估前检查有效表达式?

javascript - 以某种方式使用 CSS 引用哈希值

Javascript - 仅将输入值的一部分保存到 localStorage

jquery - 使用jquery同步调用

ios - 即使在完成处理程序中,Swift 代码也会异步执行

javascript - 为什么 setTimeout 在循环内与递归函数内无法正确执行

javascript - React JS Ajax 数据循环

用于变量名称的 R 循环以运行线性回归模型

php - Bootstrap - 模态仅显示第一项

测试可被 7 整除/倍数的 C++ 程序