0

我正在尝试发帖,但我总是收到

400 error (Bad Request) caught at middleware with reason: "Request failed with status code 400".
Uncaught (in promise) Error: Request failed with status code 400

我试图在 Network - Preview 中查看,但那里没有任何消息。

这就是我想要做的:

  const saveEntity = (event, errors, values) => {
   values.lastModifiedBy = null;
    values.lastModifiedDate = null;
    console.log('values: ', values);
    if (errors.length === 0) {
         Realms.forEach(elementRealm => {
          if(`${elementRealm.id}` === values.realmId.id){
           values.realmId = elementRealm
         }
      })
      const entity = {
        ...values,
}
  if (isNew) {
        props.createEntity(entity);
      } else {
        props.updateEntity(entity);
      }
    }

在我的减速机中:

export const createEntity: ICrudPutAction<Realm> = entity => async dispatch => {
  const result = await dispatch({
    type: ACTION_TYPES.CREATE_REALM,
    payload: axios.post(apiUrl, cleanEntity(entity)),
  });
  dispatch(getEntities());
  return result;
};

我使用的形式是:

    <AvForm model={isNew ? {} : Realm} onSubmit={saveEntity}>
                  <AvField
                    id="sce-realmName"
                    data-cy="realName"
                    type="text"
                    name="realmName"
                    validate={{
                      required: { value: true, errorMessage: 'This field is required.' },
                    }}
                  />
<AvGroup>
                <Label id="descriptionLabel" for="sce-realmDescription">
                  Description
                </Label>
                <AvField id="sce-realmDescription" data-cy="description" type="text" name="description" />
              </AvGroup>
 <AvInput
                      id="sce-realm-realmId"
                      data-cy="realmId"
                      type="select"
                      className="form-control"
                      name="realmId.id"
                      required
                    >
                      <option value="" key="0" />
                      {Realms
                        ? Realms.map(otherEntity => (
                            <option value={otherEntity.id} key={otherEntity.id}>
                              {otherEntity.name}
                            </option>
                          ))
                        : null}
                    </AvInput>

我真的不明白问题出在哪里,我该怎么办?

4

1 回答 1

1

AFAIK,调度动作是同步的,所以你不能等待它。所以问题出在你的调度部分。如果你做这样的事情,它应该被修复

export const createEntity: ICrudPutAction<Realm> = entity => async dispatch => {
  const result = await axios.post(apiUrl, cleanEntity(entity));
  dispatch({
    type: ACTION_TYPES.CREATE_REALM,
    payload: result.data,
  });
  dispatch(getEntities());
  return result;
};

您需要等待您的 API 调用完成,然后调度一个同步调用操作。当它是客户端错误时会发生 4XX 错误,因此您需要检查您的发布数据格式、标题等,因为服务器可能会拒绝您的错误请求。

于 2021-07-08T09:37:40.517 回答