我在我的 React 应用程序中创建了一个用户架构,如下所示:
const userSchema = new Schema(
{
profileId: String,
expirationDate: { type: Date, default: new Date() },
credits: { type: Number, default: 0 },
},
{ timestamps: { createdAt: "created_at" } }
);
Run Code Online (Sandbox Code Playgroud)
当用户向我付款时,我想通过 post 方法重置/更新两个字段:expirationDate 和 credits。这是我在 expressjs 后端服务器上用于更新 MongoDB Atlas 上的数据库条目的代码:
req.user.expirationDate = new Date(
req.user.expirationDate.setDate(req.user.expirationDate.getDate() + 30)
);
req.user.credits += 1;
const user = await req.user.save();
res.send(user);
Run Code Online (Sandbox Code Playgroud)
一旦操作成功,我可以看到“credits”字段被更新(增加了1)。但是,“expirationDate”字段保持不变。更奇怪的是,当我使用“res.send(user)”将更新的用户对象发送到我的前端服务器时,我可以在控制台中看到更新的到期日期。
但下面是我在 mongoDB 中看到的:
更新了 MongoDB 中的用户条目:日期字段“expirationDate”未更新;但是,“学分”字段是。
这里发生了什么?如何解决?