反应:仅发送数组

React: Send array only

我正在使用 Reactaxios 来获取和 post 简单列表中的数据。

在控制台的 post 上,我有以下内容:

{data: "", status: 200, statusText: "OK", headers: {…}, config: {…}, …}
config: {url: "http://localhost:8000/api/social/reorder/", method: "post", data: "{"order":[{"id":2,"order":1},{"id":1,"order":2},{"id":3,"order":3}]}", headers: {…}, transformRequest: Array(1), …}
data: ""
headers: {cache-control: "no-cache, private", connection: "close", content-type: "text/html; charset=UTF-8", date: "Thu, 22 Apr 2021 16:48:09 GMT, Thu, 22 Apr 2021 16:48:09 GMT", host: "localhost:8000", …}
request: XMLHttpRequest {readyState: 4, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, onreadystatechange: ƒ, …}
status: 200
statusText: "OK"
__proto__: Object

表示新推送的数据为:

data: "{"order":[{"id":2,"order":1},{"id":1,"order":2},{"id":3,"order":3}]}"

我想问题是我只需要没有 order 的数组就可以让数据库更新信息 ,像这样:

[{"id":2,"order":1},{"id":1,"order":2},{"id":3,"order":3}]

所以我的table的每个字段都会收到一个对应于他们id的新订单。

目前,数据是推送的,如您在控制台中所见,但未在数据表 中注册。所以发送的数据肯定是错误的,我怀疑是order.

我的职能:

function handleChangeOrder() {

  const items = Array.from(list);
  let newSequence = [];
  items.forEach((item, index) => {
      newSequence.push({ id: item.id, order: index + 1 });
  });
  axiospost(newSequence);  
  
}


async function axiospost(order){  

try {
  const response = await  axios.post('http://localhost:8000/api/social/reorder/', {order});
  return response.data;

} catch (error){console.error("Not able");}

}

我的后端控制器,如果有帮助的话:

public function reorder(Request $request)
    {
        $this->validate($request,['order'=>'required']);
        $order = $request->input('order');

        DB::transaction(function () use ($order){
            foreach ($order as $value){
                Social::find($value['id'])->update(['order'=>$value['order']]);
            }
        });

    }

我的控制器语法有问题,因为数据正在传递到数据库,但语法有问题。

更新时,我应该使用 where 而不是 find,如下所示:

 DB::transaction(function () use ($order){
            foreach ($order as $value){                
                Social::where('id', $value['id'])->update(['order' =>$value['order']]);
            }
        });