Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mongoose无法识别.all()承诺函数?_Javascript_Arrays_Mongoose_Promise - Fatal编程技术网

Javascript Mongoose无法识别.all()承诺函数?

Javascript Mongoose无法识别.all()承诺函数?,javascript,arrays,mongoose,promise,Javascript,Arrays,Mongoose,Promise,我试图使用承诺来处理mongoose对mongodb数据库的异步查询 我需要针对单个项目进行验证,然后针对mongodb中存在的项目数组进行验证 我已经尝试过回调、异步/等待,现在我正在尝试承诺。但我似乎无法让这东西运转起来 我需要确保一件事只有在另一件事完成后才会发生。我还必须构建数据库中存在和不存在的项目列表,并将其传递给下一个promise 但是,mongoose似乎不接受.all(),因为我得到以下错误: TypeError: validateInputClass(...).then(.

我试图使用承诺来处理mongoose对mongodb数据库的异步查询

我需要针对单个项目进行验证,然后针对mongodb中存在的项目数组进行验证

我已经尝试过回调、异步/等待,现在我正在尝试承诺。但我似乎无法让这东西运转起来

我需要确保一件事只有在另一件事完成后才会发生。我还必须构建数据库中存在和不存在的项目列表,并将其传递给下一个promise

但是,mongoose似乎不接受.all(),因为我得到以下错误:

TypeError: validateInputClass(...).then(...).all is not a function
我当前使用的路径是:

app.route('/users/enroll/:classId').put(todoList.enroll_in_class);
我通过的主体是:
{“用户”:[“知识”、“ipsum”]}

这是我正在处理的代码的实现,它给了我一个错误,即.all()不是函数

function validateInputClass(inputclassId){
  return Class.findOne({ classId: inputclassId}, function(err, classs) {
    if(err){
      throw err;
    }
  });
}

exports.enroll_in_class = function(req, res){
  var userLogArray = req.body.users.map(function(user){
          new Promise((user) => {console.log(user)});
        })
  if(req.body.users.length > 0){
    validateInputClass(req.params.classId)
      .then((response) => {
        if(response){
          return response;
       } else {
          res.json({"message":"Class does not exist"})
       }
      }).all((userLogArray => {
            console.log("Done");
      });
  }
}

在过去的几个小时里,我一直把头撞在墙上。我似乎无法理解这一点

Promise实例没有
.all
方法。只有
承诺。所有
都存在。似乎您需要更像
Promise.all(userLogArray)。然后(()=>validateInputClass(…)。然后(response=>{……;console.log('done');})
;?也许吧,但我更喜欢在validateInputClass()之后执行all(),这对我来说没有意义,但你当然可以做你想做的任何事情。主要的一点是承诺没有
。all
方法。因此,无论您认为
somePromise.all()
会做什么,您都必须做不同的事情毫无意义。阅读一些有关promise构造函数回调的内容。另外,由于在
.map
回调中不返回任何内容,因此最终将得到一个
未定义的
数组-因此,您还需要阅读一些关于数组映射方法的内容