【发布时间】:2020-09-14 16:52:33
【问题描述】:
我尝试从 setting.js 中获取信息来执行 PATCH 方法,但我得到了错误。
Cannot destructure property 'name' of 'req.body' as it is undefined.
在设置中我有另一种 PUT 方法,用于更改密码。 PUT 方法工作正常,但要编辑名称和简历,我尝试使用 PATCH 方法但出错。
我该如何解决这个问题?
下面是setting.js和api/user/index.js的代码
setting.js
const handleSubmit = async (event) => {
event.preventDefault();
if (isUpdating) return;
setIsUpdating(true);
const formData = new FormData();
formData.append('name', nameRef.current.value);
formData.append('bio', bioRef.current.value);
const res = await fetch('/api/user', {
method: 'PATCH',
body: formData,
});
if (res.status === 200) {
const userData = await res.json();
mutate({
user: {
...user,
...userData.user,
},
});
setMsg({ message: 'Profile updated' });
} else {
setMsg({ message: await res.text(), isError: true });
}
};
api/user/index.js
import nextConnect from 'next-connect';
import middleware from '../../../middlewares/middleware';
import { extractUser } from '../../../lib/api-helpers';
const handler = nextConnect();
handler.use(middleware);
handler.get(async (req, res) => res.json({ user: extractUser(req) }));
handler.patch(async (req, res) => {
if (!req.user) {
req.status(401).end();
return;
}
const { name, bio } = req.body;
await req.db.collection('users').updateOne(
{ _id: req.user._id },
{
$set: {
...(name && { name }),
bio: bio || '',
},
},
);
res.json({ user: { name, bio } });
});
export const config = {
api: {
bodyParser: false,
},
};
export default handler;
【问题讨论】:
-
分享
req.body的内容 -
嗨 Evert,非常感谢您的回复,因为这种方法对我来说很新。您能否举例说明如何共享 req.body 的内容?
-
尝试添加
console.log(req.body) -
那么你的身体没有被发送,或者没有被解析。
bodyParser: false很可疑=) -
还将
req.status(401).end();更改为res而不是req
标签: javascript node.js reactjs next.js