插入并放入nodeJs + express api时,带有Redux Saga的Axios不发送表单数据

Posted

技术标签:

【中文标题】插入并放入nodeJs + express api时,带有Redux Saga的Axios不发送表单数据【英文标题】:Axios with Redux Saga not sending form data when insert and put to nodeJs+express api 【发布时间】:2021-12-31 04:25:53 【问题描述】:

目前我正在使用 nodeJS 反应并表达为 api。当我在没有 formData 的情况下使用 redux saga 向 api 发送数据时,它工作正常,但是当我尝试使用 formData 提交时,有一条 res 消息,我认为这是因为发送的有效负载是空的

在网络有效负载选项卡上,不发送任何表单数据

这是我使用的代码

export const addNewData = values => 
    const data = new FormData()
    data.append("nama", values.nama)
    data.append("harga", values.harga)
    // data.append("image", selectedFiles)
    data.append("fasilitas", values.fasilitas)
    data.append("deskripsi", values.deskripsi)

    post(url.ADD_NEW_DATA, data, 
        headers:  "content-type": "multipart/form-data" ,
    )

const axiosApi = axios.create(
  baseURL: API_URL,
)

axiosApi.defaults.headers.common["authorization"] = token

axiosApi.interceptors.response.use(
  response => response,
  error => Promise.reject(error)
)

export async function post(url, data, config = ) 
    return axiosApi
        .post(url,  ...data ,  ...config )
        .then(response => response.data.data)

然后我直接在提交按钮上尝试了,没有使用 redux saga,效果很好

Axios.post("http://localhost:4000/v1/data/insert", data, 
        headers: 
          "content-type": "multipart/form-data",
          "authorization": token,
        ,
      )
        .then(res => 
          console.log("success ", res)
        )
        .catch(err => console.log(err))

谁能帮帮我?我想继续使用 redux saga

更新 当我将 ...data 更改为异步函数中的数据时,formData 已正常发送成功,任何人都可以解释一下吗?提交非formData格式的数据会有影响吗?

export async function post(url, data, config = ) 
    return axiosApi
        .post(url, data,  ...config )
        .then(response => response.data.data)

【问题讨论】:

错误是什么? "message":"Cannot read properties of undefined (reading 'image')" 我认为这是因为发送的有效负载是空的 【参考方案1】:

将 ...data 改为 data 解决

export async function post(url, data, config = ) 
    return axiosApi
        .post(url, data,  ...config )
        .then(response => response.data.data)

【讨论】:

以上是关于插入并放入nodeJs + express api时,带有Redux Saga的Axios不发送表单数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 mongodb 中自动插入记录(nodejs、express、mongoose)

使用nodejs编写api接口并部署到服务器上

Nodejs - 小型 Express 服务器 + trayicon + pkg

Express nodejs不使用带表单数据的mongoose插入数据

在 NodeJS/Express 中使用 API 网关进行微服务 API 身份验证

Express 和 Nodejs:调用外部 API 的最佳方式