Node.js 如何从数据库加载所选项目?
所以我有一个默认的模型来查看我的数据,还有一个表单来输入数据。我想知道检索一项选定数据的最佳实践是什么?这是一个MERN堆栈 目前,我正在使用窗口散列,并将id添加到url中,然后以这种方式从数据库中检索,但我觉得这很简单,并且试图添加更新功能,这似乎会让人困惑 我曾经考虑过向redux添加一个currentID,但是我可以看到当它被持久化时出现的问题,并且您在查看之后去创建一个配方,最后编辑而不是创建 从url检索idNode.js 如何从数据库加载所选项目?,node.js,reactjs,mongodb,express,Node.js,Reactjs,Mongodb,Express,所以我有一个默认的模型来查看我的数据,还有一个表单来输入数据。我想知道检索一项选定数据的最佳实践是什么?这是一个MERN堆栈 目前,我正在使用窗口散列,并将id添加到url中,然后以这种方式从数据库中检索,但我觉得这很简单,并且试图添加更新功能,这似乎会让人困惑 我曾经考虑过向redux添加一个currentID,但是我可以看到当它被持久化时出现的问题,并且您在查看之后去创建一个配方,最后编辑而不是创建 从url检索id const recipeId = window.location.hash
const recipeId = window.location.hash.substr(1);
const recipe = useSelector((state) =>
state.recipes.find((r) => r._id === recipeId)
);
我从mongo那里得到我的食谱
export const recipeList = async (req, res) => {
try {
const recipes = await recipeSheet.find();
res.status(200).json(recipes);
} catch (error) {
res.status(404).json({ message: error.message });
}
};
并存储到redux
export const getRecipes = () => async (dispatch) => {
try {
const { data } = await api.fetchRecipes();
dispatch({ type: "FETCH_ALL_RECIPES", payload: data });
} catch (error) {
console.log(error.message);
}
};
这取决于数据的大小。最好定义一个新的GET路径来检索单个记录,比如
BASE\u URL/api/recipes/123
,或者您可以为当前端点添加查询接受,以便在DB中查找特定id并返回它,比如BASE\u URL/api/recipes?id=123
。原因除了优化(对于大型数据集),在将所有记录存储到redux存储之后,记录可能会发生更改,并且通过当前解决方案,您会将旧数据显示给用户。最佳实践告诉我们选择第一种方法作为解决方案,第二种方法通常用于过滤数据。然后,用户只需发送新的URL,就可以触发对新端点的新API调用并获取单个记录