我是新的后端开发与MongoDB,NodeJS和前端开发与反应-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])发布于 2022-05-02 19:39:37
我解决了,我犯了个错误。当我在我的库存中添加产品时,我没有将我的电子邮件保存在数据库中。将我的电子邮件保存在数据库中后,现在我可以通过电子邮件过滤产品并在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();
}
});
}发布于 2022-05-02 13:19:28
toArray函数存在于本机MongoDB NodeJS驱动程序的游标类上。MongooseJS中的查找方法返回一个查询对象。
在这种情况下,您可以直接使用cursor记录或发送res.send(cursor)。
https://stackoverflow.com/questions/72085840
复制相似问题