我在前端使用React + Redux,在后端使用loopback3。 我有一个简单的表单,文本输入和一个文件输入。 我像往常一样创建formData
const formToSend = new FormData(document.getElementById("form_add_news"));
然后我把它发送到axios
return axios.post(*url*, action.formData,{
params:{
access_token:localStorage.getItem("users_token")
}
})
.then((response) => {
return response
})
.catch(e => {
return e.response
})
以下是发送的请求:
> ------WebKitFormBoundaryiBetnol46iuFG9Pt
> Content-Disposition: form-data; name="title"
>
> efzef
> ------WebKitFormBoundaryiBetnol46iuFG9Pt
> Content-Disposition: form-data; name="background_img"; filename="bs.png"
> Content-Type: image/png
>
>
>------WebKitFormBoundaryfDIsq7k9dwZtFjpq
> Content-Disposition: form-data; name="content"
>
> <p>zevzev</p>
>
>
> ------WebKitFormBoundaryiBetnol46iuFG9Pt
> Content-Disposition: form-data; name="users_id"
>
> 5
> ------WebKitFormBoundaryiBetnol46iuFG9Pt--
>
请求标题
> Accept:application/json, text/plain, */*
> Content-Type:multipart/form-data; boundary=---WebKitFormBoundaryiBetnol46iuFG9Pt
> ...
但我总是得到422 ValidationError“title”:不能为空,“内容”不能为空......
我试图检查'保存前'钩子,但我的表格中没有任何内容:( 似乎根本没有收到表格。 感谢您提前提供任何帮助。
答案 0 :(得分:0)
如果您获得422,则意味着环回不处理输入。因此'在保存之前'不会调用钩子,因为环回首先不会保存任何数据。
然而,您可以尝试'beforeRemote'钩子。 https://loopback.io/doc/en/lb3/Remote-hooks.html
// enter the remote method's name in place of '**'. '**' will call the hook before all methods of the model
Model.beforeRemote('**', (ctx, data, next) => {
// ctx.args.ARG_NAME has the data you posted
next();
});
您可以共享模型的环回代码吗?我觉得标题不能被接受为表单数据输入