javascript - 无法从客户端向 Fastify 后端发出 PUT 请求
问题描述
我正在尝试通过向我的 Fastify 服务器发送 PUT 请求从客户端更新信息,但没有发送任何内容。也没有显示错误,只是没有变化。
POST 和 GET 请求在客户端可以正常工作。
PUT 请求在 Insomnia/Postman 中工作。
我已经安装了 fastify-cors:
fastify.register(require("fastify-cors"), {
origin: "*",
methods: "GET,POST,PUT,PATCH,DELETE",
});
客户端请求
export default function EditUser({ route, navigation }) {
const { item } = route.params;
const [firstName, setFirstName] = useState(item.name[0].firstName);
const editUser = async () => {
try {
const res = await fetch(`http://<myIPaddr>:5000/api/users/${item._id}`, {
method: "PUT",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
},
body: firstName,
});
console.log(firstName);
} catch (error) {
console.log(error);
}
};
return (
<View>
<Layout>
<Text style={styles.text}>EDIT USER PAGE</Text>
<View>
<TextInput
style={styles.input}
onChangeText={(e) => setFirstName(e)}
value={firstName}
/>
<Text style={{ color: "#FFF" }}>{item._id}</Text>
<Button title="save changes" onPress={editUser} />
</View>
</Layout>
</View>
);
}
后端路由
fastify.put("/:id", async (request, reply) => {
try {
const { id } = request.params;
const user = await User.findByIdAndUpdate(id, request.body);
if (!user) {
return reply.status(400).send({ error: "couldn't find user" });
}
reply.status(200).send({ success: true, data: user });
} catch (error) {
reply.status(400).send({ error: "request failed" });
}
});
解决方案
检查后端日志,可能是您正在使用return reply.send
. 删除return
. 从文档:
警告:
当同时使用 return value 和 reply.send(value) 时,发生的第一个优先,第二个 value 将被丢弃,并且还会发出警告日志,因为您尝试发送两次响应。
推荐阅读
- python - 在 For 循环中:如何将值与 groupby 函数中的值进行比较
- git - VSCode Git 跟踪颜色?
- django - Django中的分页概念和实现大型对象的有效方法
- android - 滚动时recyclerview视图行为不端?
- listview - 由 SearchBar 过滤的 Xamarin 组 ListView
- wordpress - 获取联系表格 7 多个图像名称
- c++ - 在 C++ 编程的文件夹中创建文件
- python - MultiIndex 来自不规则长度的列表
- sql - 如何在 Impala 中使用大量数据解决差距和孤岛问题
- c# - C#语音识别不会回答我