Mongo DB 和存储数据

问题描述 投票:0回答:1

所以我目前正在大学上 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" });
  }
});

'''

我只是无法让我的前端实际调用它并发送数据。

node.js mongodb web
1个回答
0
投票
  1. 为了减少数据库访问次数,降低竞争访问出现问题的可能性,最好使用 findOneAndUpdate 方法。

  2. 你的变量userId是String类型,但是MongoDB将_id字段存储为ObjectId类型,所以在我选择这个字段之前,你必须将userId变量转换为ObjectId类型。像这样:

import { ObjectId } from 'bson';

const userId = new ObjectId(req.query.userid);

© www.soinside.com 2019 - 2024. All rights reserved.