Javascript 使用mongoose和promise.all更新子文档
当我检查promiseArr中的值时出现此错误,请有人帮忙,或者您可以建议更好的方法吗?谢谢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
**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));
});
}