如何查询 api 电子邮件,我可以使用 expressJs 和 nodeJs 为来自 mongoDB 的不同用户找到数据电子邮件

How to make query api for email that I can find data email wise for different users from mongoDB with expressJs , nodeJs

我是 MongoDB、NodeJS 后端开发和 React-JS 前端开发的新手。 我想创建一个 API 端点,从 MongoDB 中查找数据,并在用户登录系统时按用户电子邮件地址进行过滤。我的登录系统完全没问题。但问题是,当我尝试从客户端检索数据时,时间数据未在 UI 上显示(获取)。它创建并清空数组。我想知道我的代码有什么问题。

这是我的 API 后端代码:

app.get('/myproducts', async (req, res) => {
  const email = req.query.email;
  const query = { email: email };
  const cursor = inventoryCollection.find(query);
  const myProducts = await cursor.toArray();
  console.log(myProducts);
  res.send(myProducts);
});

客户端代码:

useEffect(() => {
  const getMyProducts = async () => {
    const email = user?.email;
    console.log(email);
    const url = `http://localhost:5000/myproducts?email=${email}`;
    try {
      await fetch(url)
        .then(res => res.json())
        .then(data => setProducts(data))
    } catch (error) {
      console.log(error?.message)
    }
  }
  getMyProducts();
}, [user])

toArray 函数存在于原生 MongoDB NodeJS 驱动程序的 Cursor class 上。 MongooseJS中的find方法returns一个Query对象

在这种情况下,您可以使用 res.send(cursor) 直接登录或发送您的 cursor

我解决了,我的错误。当我在我的库存中添加产品时,我没有将我的电子邮件保存在数据库中 post。将我的电子邮件保存在数据库中后,现在我可以通过电子邮件过滤产品并在 UI.

上显示
    const handleProductPost = (event) => {
    event.preventDefault();
    const email = user.email; //before, I did not added this email when posting 
    const productName = event.target.productName.value;
    const image = event.target.image.value;
    const description = event.target.description.value;
    const price = event.target.price.value;
    const quantity = event.target.quantity.value;
    const supplierName = event.target.supplierName.value;

    const product = { email, productName, image, description, price, quantity, supplierName };

    fetch('https://back-pack-warehouse.herokuapp.com/product', {
        method: 'POST',
        headers: {
            'content-type': 'application/json'
        },
        body: JSON.stringify(product)
    })
        .then(res => res.json())
        .then(data => {
            if (data.insertedId) {
                toast('Product Added Successfully');
                event.target.reset();
            }
        });
}