如何使用 React(Next.js) 中的特定值有条件地从数据库中获取项目?
How do I conditionally get items from DB using specific value in React(Next.js)?
在我的数据库中,有文件。每个文件都有'IS_DELETE'行,显示这个文件是否被删除。
如果一个文件的 'IS_DELETE' 行是 0,这意味着它没有被 post.
的作者删除
如果一个文件的'IS_DELETE'行是1,则表示它已被作者删除。
但是,我使用 GET 请求来呈现项目。
我把代码做了,让你看的清楚。我可能拼错了!
test = () => {
const [files, setFiles] = useState([]);
const getDetails = async () => {
await get(`URL`)
.then((res) => {
setFiles(res)
})
}
useEffect=(() => {
getDetails()
},[])
return (
<>
files.map((file) => (
<div>
{file}
</div>
))
</>
)}
使用这段代码,我渲染了每个文件,尽管有些文件的 IS_DELETE 行中有“1”。
我想知道我是否可以有条件地从数据库中获取项目
要么
我获取每个文件并使用特定函数过滤我的数组。
仅供参考,我得到了这种格式的文件。
[
{PK:1, NAME:'Hello.jpg', IS_DELETE: 0}
{PK:2, NAME:'Nice.jpg', IS_DELETE: 1}
{PK:3, NAME:'To.jpg', IS_DELETE: 0}
]
谢谢。我不擅长英语。所以请谅解。
等你的智慧!
不,您不能修改从服务器获得的响应,除非它专门有一个端点可以这样做。这就像发送一封信并等待回复 - 除非您的收件人允许您发送带有特定请求的信件(例如 'give me only non-deleted items'),否则您不能使回复不同,但如果您不负责服务器,您唯一能做的就是过滤您收到的响应项目。
const getDetails = async () => {
await get(`URL`)
.then((res) => {
const filtered = res.filter(file => file.IS_DELETE === 0);
setFiles(filtered);
})
}
你可以在 url 中传递参数 is_deleted 与主参数
{url}?is_deleted=0
根据您使用的数据库,可以这样做。例如,在 SQL 数据库中,您可以执行 SELECT * FROM files WHERE IS_DELETE != 0
但您也可以在前端执行,如下所示:
const getDetails = async () => {
const res = await get(`URL`);
setDetails(res.filter(file => !file.IS_DELETE));
}
我的想法是在 url 中传递参数作为查询字符串,然后在服务器端获取值并将其放入数据库查询中
test = () => {
const [files, setFiles] = useState([]);
const getDetails = async () => {
await get(`URL?is_deleted=0`)
.then((res) => {
setFiles(res)
})
}
useEffect=(() => {
getDetails()
},[])
return (
<>
files.map((file) => (
<div>
{file}
</div>
))
</>
)}
在我的数据库中,有文件。每个文件都有'IS_DELETE'行,显示这个文件是否被删除。
如果一个文件的 'IS_DELETE' 行是 0,这意味着它没有被 post.
的作者删除如果一个文件的'IS_DELETE'行是1,则表示它已被作者删除。
但是,我使用 GET 请求来呈现项目。
我把代码做了,让你看的清楚。我可能拼错了!
test = () => {
const [files, setFiles] = useState([]);
const getDetails = async () => {
await get(`URL`)
.then((res) => {
setFiles(res)
})
}
useEffect=(() => {
getDetails()
},[])
return (
<>
files.map((file) => (
<div>
{file}
</div>
))
</>
)}
使用这段代码,我渲染了每个文件,尽管有些文件的 IS_DELETE 行中有“1”。
我想知道我是否可以有条件地从数据库中获取项目 要么 我获取每个文件并使用特定函数过滤我的数组。
仅供参考,我得到了这种格式的文件。
[
{PK:1, NAME:'Hello.jpg', IS_DELETE: 0}
{PK:2, NAME:'Nice.jpg', IS_DELETE: 1}
{PK:3, NAME:'To.jpg', IS_DELETE: 0}
]
谢谢。我不擅长英语。所以请谅解。
等你的智慧!
不,您不能修改从服务器获得的响应,除非它专门有一个端点可以这样做。这就像发送一封信并等待回复 - 除非您的收件人允许您发送带有特定请求的信件(例如 'give me only non-deleted items'),否则您不能使回复不同,但如果您不负责服务器,您唯一能做的就是过滤您收到的响应项目。
const getDetails = async () => {
await get(`URL`)
.then((res) => {
const filtered = res.filter(file => file.IS_DELETE === 0);
setFiles(filtered);
})
}
你可以在 url 中传递参数 is_deleted 与主参数
{url}?is_deleted=0
根据您使用的数据库,可以这样做。例如,在 SQL 数据库中,您可以执行 SELECT * FROM files WHERE IS_DELETE != 0
但您也可以在前端执行,如下所示:
const getDetails = async () => {
const res = await get(`URL`);
setDetails(res.filter(file => !file.IS_DELETE));
}
我的想法是在 url 中传递参数作为查询字符串,然后在服务器端获取值并将其放入数据库查询中
test = () => {
const [files, setFiles] = useState([]);
const getDetails = async () => {
await get(`URL?is_deleted=0`)
.then((res) => {
setFiles(res)
})
}
useEffect=(() => {
getDetails()
},[])
return (
<>
files.map((file) => (
<div>
{file}
</div>
))
</>
)}