我有一个可以过滤的产品列表,但是当我使用query:执行此操作时?category=all,带有产品的 JSON 来自服务器直接到页面(我知道它来到页面,因为我返回它),而不是我的内容网站。
是否可以使用query过滤产品过滤产品并在页面上仅显示过滤产品?
也许有nuxt这样的文件名,例如user/_settings仅用于query?
服务器
const express = require('express');
const router = express.Router();
const Product = require("../models/Product");
router.get("/", async (req, res) => {
try {
const { query: { category } } = req;
const products = await Product.find();
const productsByCategory = category === "all" ? products : products.filter(prd => prd.category === category);
return res.status(200).json({ ok: true, products: productsByCategory });
} catch (err) {
return res.status(500).json({ ok: false, message: "Произошла ошибка сервера", });
}
});
module.exports = router;
客户
const serv = process.env.NODE_ENV === 'development' ? 'http://localhost:3000' : '';
async fetchProducts() {
try {
const data = await fetch(`${serv}/`, {
method: 'GET',
headers: {
"Content-Type": "application/json",
}
});
return data.json();
} catch (err) {
throw err;
}
}
我通过以下方式解决了这个问题:
添加
asyncData和watch用于监视queryUPD:您可以用以下代码替换这块:(在帮助下,
watchQuery更改时将覆盖整个页面?category。更多详细信息)然后我将类别发送到服务器
我展示了这个类别的产品