【发布时间】:2020-08-03 05:53:51
【问题描述】:
无法让异步/等待功能在我的纸牌游戏应用中正常工作。
(a) 我收到没有数据的 201 响应。
(b) 甲板文档似乎是在之后创建的,其中玩家字段为空数组,表明它是在甲板保存到 mongoDB 之后完成的
下面是我的代码。任何帮助表示赞赏。
router.js
router.post('/game', (req, res, next) => {
try {
const { cards, playerNames, attributes } = req.body;
const newDeck = deck.start(cards, playerNames, attributes);
res.status(201).send(newDeck);
} catch (err) {
next(err);
};
});
/services/deck.js
exports.start = async (cards, playerNames, attributes) => {
try {
const users = await user.create(playerNames);
const deck = new Deck({
cards,
attributes,
players: users
});
return await deck.save((err, newDeck) => {
if (err) console.log(err);
console.log('RESULT', newDeck);
});
} catch (err) {
console.log(err);
}
};
/services/user.js
exports.create = async (users) => {
if (users.constructor === String) {
const user = new User({displayname: users});
return await user.save((err, newUser) => {
if (err) console.log(err);
console.log('NEW USERS ', user);
return newUser;
});
} else if (users.constructor === Array) {
let userList = [];
await users.forEach(name => {
const user = new User({displayname: name.toString()});
return user.save((err, newUser) => {
if (err) {
console.log(err);
} else {
userList.push(newUser);
return newUser;
}
});
});
console.log('NEW USERS ', userList);
return userList;
};
};
【问题讨论】:
-
@AvivLo 他是。 Async/Await 是管理 Promise 的一种方式。
-
对不起,我想说回调。
-
哦,是的,你是对的。 save 方法似乎没有返回承诺。
标签: node.js mongodb mongoose async-await