r-获取我的集合req.query(express,node.js)



我想恢复数据库中的集合。问题是我的查询仍然没有定义。

这是我的请求:

const products = {
getProducts: async (req, res) => {
const productId = req.query.id;
console.log(productId);
const product = await ProductsModel.find({}).exec();
if (product instanceof Error) {
res.status(500).json({ message: "Error" });
return;
}
res.json(product);
},
};
module.exports = products;

我的猫鼬模式:


const ProductSchema = new mongoose.Schema({
image: {
type: String,
},
title: {
type: String,
},
description: {
type: String,
},
price: {
type: Number,
},
category: {
type: String,
},
});
const Products = mongoose.model("Products", ProductSchema);
module.exports = Products;

我的提取:

const [products, setProducts] = useState([]);
useEffect(getProducts, []);
async function getProducts() {
const options = {
method: "GET",
}
const response = await fetch("http://localhost:8000/products", options);
const productsData = await response.json();
setProducts(productsData);
console.log(productsData);
}

我的错误消息:

[节点]由于更改而重新启动。。。

[节点]启动node ./bin/www

(节点:4279(弃用警告:collection.ensureIndex已弃用。请改用createIndexes。

(使用node --trace-deprecation ...显示创建警告的位置(

未定义

GET/产品304 14.493毫秒--

提前感谢您的帮助

首先,在从Schema文件导出时,您已经完成了:

module.exports = Products;

但是在您的请求文件上提取您已经完成的产品:

const product = await ProductsModel.find({}).exec();

您应该将其替换为:

const product = await Products.find({}).exec();

您在req.query上得到了未定义的,因为在服务器上请求时并没有传递查询。要传递查询,请使用?id=提取文件中,您应该进行以下更改:

const response = await fetch("http://localhost:8000/products?id="+productId, options);

或者,您也可以使用Tempelate Literals`,这是一个很好的做法。

const response = await fetch(`http://localhost:8000/products?id=${productId}`, options);

对于弃用警告,您必须在连接数据库的地方进行以下更改。

mongoose.connect('mongodb://localhost:27017/name',{
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex:true},()=>{console.log('database connected')}

最新更新