所以我目前正在大学上 Webdev 课程,我们正处于必须使用 mongo 来存储用户信息的部分。我已经能够设置在 mongo atlas 中创建数据的注册和登录端点,例如格式为:
id: ObjectId('65ff33d3bfe134749850da45')
username: "admi"
email: "[email protected]"
password: "$2b$10$DstkYh8VBDqd/aOmfQNJT.iVPCbJJRm9YgFcXGiOKL3qQ3/wUuXIi"
taskCount: 0
coinCount: 0
soldItems: 0
截至目前,用户的计数信息都存储在本地存储中。但我不知道如何为特定用户更新数据库。
我有一个
/data
端点,但我不知道如何使用cookie来跟踪登录的人,为该用户调用它并更新他们的信息。
如果有任何帮助,我将不胜感激。
这是我制作的/data后端
'''
app.post('/data', async (req, res) => {
try {
const { taskCount, coinCount, soldItems } = req.body;
const userId = req.query.userid;
const user = await userCollection.findOne({ _id: userId });
if (!user) {
return res.status(404).json({ message: "User not found" });
}
await userCollection.updateOne(
{ _id: userId },
{ $set: { taskCount, coinCount, soldItems } }
);
res.json({ taskCount, coinCount, soldItems, username: user.username, userid: user._id });
} catch (error) {
console.error("Error occurred while updating data:", error);
res.status(500).json({ message: "Internal Server Error" });
}
});
'''
我只是无法让我的前端实际调用它并发送数据。
为了减少数据库访问次数,降低竞争访问出现问题的可能性,最好使用 findOneAndUpdate 方法。
你的变量userId是String类型,但是MongoDB将_id字段存储为ObjectId类型,所以在我选择这个字段之前,你必须将userId变量转换为ObjectId类型。像这样:
import { ObjectId } from 'bson';
const userId = new ObjectId(req.query.userid);