【发布时间】:2020-12-21 01:45:16
【问题描述】:
我想做的是让一个用户向另一个用户发送一笔金额,我希望从发送者的余额中减去该金额,然后添加到接收者的余额中。问题是接收方余额已更新并且有效,但之前从发送方减去金额的查询不起作用。
我知道猫鼬中没有连接(至少不是经典意义上的),所以我需要先查询用户的余额,然后在另一个查询中更新它。但肯定有办法嵌套这些查询吗?我希望我只是语法错误。
user.js
const { Decimal128 } = require("mongodb");
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const UserSchema = new Schema({
email: {
type: String,
required: true,
},
password: {
type: String,
required: true,
},
name: {
type: String,
required: true,
},
useraddress: {
type: String,
required: true,
},
userbalance: {
type: Decimal128,
required: true,
}
});
module.exports = User = mongoose.model("users", UserSchema);
server.js
app.post("/sendamount", function (req, res) {
var amount = 100;
var senderAddress = "Bob123";
var receiverAddress = req.body.receiver;
// Take amount from sender balance
User.findOne({useraddress:senderAddress}, (err, sub) => {
if (err) return handleError(err);
var mybalance = parseFloat(sub.userbalance)
console.log(mybalance)
User.findOneAndUpdate(
{ useraddress: senderAddress },
{ userbalance: mybalance - amount }),
// send to receiver balance
User.findOne({useraddress:receiverAddress}, (err, sub2) => {
if (err) return handleError(err);
var receiverbalance = parseFloat(sub2.userbalance)
console.log(receiverbalance)
// add amount to receiver's balance
User.findOneAndUpdate(
{ useraddress: receiverAddress },
{ userbalance: receiverbalance + amount },
function (err, data) {
if (err) res.send(err);
res.send(data);
console.log("found " + data)
}
)
})
})
})
有人介意检查我的代码吗?谢谢
【问题讨论】:
标签: node.js mongodb mongoose mongodb-query