Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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和promise.all更新子文档_Javascript_Node.js_Reactjs_Express_Mongoose - Fatal编程技术网

Javascript 使用mongoose和promise.all更新子文档

Javascript 使用mongoose和promise.all更新子文档,javascript,node.js,reactjs,express,mongoose,Javascript,Node.js,Reactjs,Express,Mongoose,当我检查promiseArr中的值时出现此错误,请有人帮忙,或者您可以建议更好的方法吗?谢谢 **Error** <rejected> { MongooseError: Callback must be a function, got [object Object] at new MongooseError (D:\Profiles\myuser\Desktop\MERN stack\React\KukuluTech\node_modules\mongoose\lib\er

当我检查promiseArr中的值时出现此错误,请有人帮忙,或者您可以建议更好的方法吗?谢谢

**Error**  <rejected> { MongooseError: Callback must be a function, got [object Object]
    at new MongooseError (D:\Profiles\myuser\Desktop\MERN stack\React\KukuluTech\node_modules\mongoose\lib\error\mongooseError.js:11:11)
    at Function.Model.$wrapCallback (D:\Profiles\myuser\Desktop\MERN stack\React\KukuluTech\node_modules\mongoose\lib\model.js:4481:11)
    at Function.Model.findOneAndUpdate (D:\Profiles\myuser\Desktop\MERN stack\React\KukuluTech\node_modules\mongoose\lib\model.js:1995:21)
    at Promise (D:\Profiles\myuser\Desktop\MERN stack\React\KukuluTech\apiServer.js:153:13)
    at new Promise (<anonymous>)
    at runUpdate (D:\Profiles\myuser\Desktop\MERN stack\React\KukuluTech\apiServer.js:151:12)
    at players.forEach (D:\Profiles\myuser\Desktop\MERN stack\React\KukuluTech\apiServer.js:164:47)
    at Array.forEach (<anonymous>)
    at D:\Profiles\myuser\Desktop\MERN stack\React\KukuluTech\apiServer.js:164:11
    at Layer.handle [as handle_request] (D:\Profiles\myuser\Desktop\MERN stack\React\KukuluTech\node_modules\express\lib\router\layer.js:95:5)
    at next (D:\Profiles\myuser\Desktop\MERN stack\React\KukuluTech\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (D:\Profiles\myuser\Desktop\MERN stack\React\KukuluTech\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (D:\Profiles\myuser\Desktop\MERN stack\React\KukuluTech\node_modules\express\lib\router\layer.js:95:5)
    at D:\Profiles\myuser\Desktop\MERN stack\React\KukuluTech\node_modules\express\lib\router\index.js:281:22
    at param (D:\Profiles\myuser\Desktop\MERN stack\React\KukuluTech\node_modules\express\lib\router\index.js:354:14)
    at param (D:\Profiles\myuser\Desktop\MERN stack\React\KukuluTech\node_modules\express\lib\router\index.js:365:14)
    message: 'Callback must be a function, got [object Object]',
    name: 'MongooseError' } },
API:

//---->>>> POST CURRENT_BET <<<<-----
app.post("/game/current_bet/:_id", function(req, res) {
  const gameId = req.params._id;
  const betsObject = req.body.betsData;
  const players = req.body.players;

  let promiseArr = [];

  function runUpdate(playerObj) {
    return new Promise((resolve, reject) => {
      //you update code here
      Games.findOneAndUpdate(
        { _id: gameId },
        { "players.player": playerObj.player },
        { $set: { "players.$.current_bet": betsObject[playerObj.player] } },
        { new: true }
      )
        .then((result) => resolve())
        .catch((err) => reject(err));
    });
  }

  players.forEach((player) => promiseArr.push(runUpdate(player)));

  Promise.all(promiseArr)
    .then((game) => res.json(game))
    .catch((err) => {
      res.status(404).json({ gamenotfound: "No game found" });
    });
});
/->>>>>发布当前下注承诺推送(运行更新(玩家));
允诺,全部(允诺)
.then((游戏)=>res.json(游戏))
.catch((错误)=>{
json({gamenotfound:“未找到游戏”});
});
});
请看一看API。您没有正确地传递参数,似乎需要传递以下内容

function runUpdate(playerObj) {
    return new Promise((resolve, reject) => {
      //you update code here
      Games.findOneAndUpdate(
        { _id: gameId, "players.player": playerObj.player },
        { $set: { "players.$.current_bet": betsObject[playerObj.player] } },
        { new: true }
      )
        .then((result) => resolve())
        .catch((err) => reject(err));
    });
  }
function runUpdate(playerObj) {
    return new Promise((resolve, reject) => {
      //you update code here
      Games.findOneAndUpdate(
        { _id: gameId, "players.player": playerObj.player },
        { $set: { "players.$.current_bet": betsObject[playerObj.player] } },
        { new: true }
      )
        .then((result) => resolve())
        .catch((err) => reject(err));
    });
  }