我正在制作一个数字货币应用程序(一个封闭的社区),在进行交易之后,我想更新mongodb中接收者的余额。
const create = (req, res) => {
let transaction = new Transaction();
transaction.sender = req.body.sender;
transaction.receiver = req.body.receiver;
transaction.amount = req.body.amount;
transaction.save((err, doc) => {
if(!err) {
console.log(transaction.receiver);
User.updateOne({username: transaction.receiver}, {$inc: {balance: 1}});
res.json({
"status": "success",
"data": {
"transaction": doc
}
});
} else {
res.json({
"status": "error",
"message": "Could not make the transaction"
});
}
})
}当我测试:
db.getCollection('users').updateOne({username: "aidenn"}, {$inc: {balance: 1}})在RoboT3中,文档更新。为什么它不能在我的控制器上工作?
我在邮递员考试时:
{
"sender": "Nicolas",
"receiver": "aidenn",
"amount": 1
}发布于 2022-05-10 14:05:10
这应该是可行的: saveOne向您返回一个承诺:
const create = (req, res) => {
let transaction = new Transaction();
transaction.sender = req.body.sender;
transaction.receiver = req.body.receiver;
transaction.amount = req.body.amount;
transaction.save(async (err, doc) => {
if(!err) {
console.log(transaction.receiver);
const updated = await User.updateOne({username: transaction.receiver}, {$inc: {balance: 1}});
//verify the log
console.log({updated})
res.json({
"status": "success",
"data": {
"transaction": doc
}
});
} else {
res.json({
"status": "error",
"message": "Could not make the transaction"
});
}
})在这里,使用存储库模式和服务可以更好地使用可阅读的代码:
const create = async (req, res) => {
try {
let transaction = new Transaction();
transaction.sender = req.body.sender;
transaction.receiver = req.body.receiver;
transaction.amount = req.body.amount;
const transactionSaved = await transaction.save();
const updated = await User.updateOne(
{ username: transaction.receiver },
{ $inc: { balance: 1 } },
);
res.json({
status: 'success',
data: {
transaction: transactionSaved,
},
});
} catch (e) {
res.json({
status: 'error',
message: 'Could not make the transaction',
});
}
};https://stackoverflow.com/questions/72187719
复制相似问题