【发布时间】:2018-06-30 06:49:57
【问题描述】:
我正在从一个在线学习平台学习全栈反应课程,其中我使用node 和express 作为服务器,passport 用于身份验证,MongoDB 作为后端数据库。所以我有一个流程,当用户登录时,cookie 会附加给用户,因此在用户的后续请求中,cookie 被反序列化,并且来自数据库的用户记录存储在req.user 中。
所以我有一个使用条纹的计费系统,当收取金额时,他可以创建调查(比如 1 美元换 1 个信用)。现在我在 mongo db 中有用户模型
user:
{ _id: abc,
googleId: xyz,
__v: 0,
credits: 0 },
当用户支付金额时,信用必须更新,并且必须反映在标题的前端。
const keys = require('../config/keys')
const stripe=require('stripe')(keys.stripeSecretKey);
app.post('/api/stripe',async (req,res) => {
const charge = await stripe.charges.create({
amount: 500,
currency: "usd",
source: req.body.id, // obtained with Stripe.js
description: "$5 for 5 credits"
})
req.user.credits +=5;
const user = req.user.save();
});
};
我的问题是:
为什么更改req.user 并保存它会更新数据库中的用户模型。在上面的代码中,我看不到 mongoose 用户模型的任何导入?
我期待 import 用户模型 -> get 来自 req.user 的用户 id -> 然后使用 findById() -> 在 MongoDB 中识别用户,然后更改积分。
【问题讨论】:
标签: node.js mongodb express mongoose passport.js