发送带有正文JSON.stringify的请求仅存在

时间:2019-07-20 16:56:22

标签: javascript json

我创建了更新用户数据的选项,但是我遇到了问题。用户未输入所有更改数据。仅一个,例如名称。我想出了下面的解决方案,然后当某些内容为空时将其发送为空

 const response = yield call(request, requestURL, {
    method: 'PATCH',
    headers: {
      Accept: 'application/json',
      'Content-Type': 'application/json',
      Authorization: `Bearer ${token}`,
    },
    body: JSON.stringify({
      name: name && name,
      surname: surname && surname,
      password: password && password,
      email: email && email,
      currencyId: currencyId && currencyId,
    }),
  });

例如结果:

currencyId: 2
email: null
name: null
password: null
surname: null

...但是我要求的有效证明是:

usersRouter
  .route("/")

  .patch(
    [
      body("name")
        .optional()
        .isString()
        .isAlpha()
        .isLength({ min: 1 }),
      body("surname")
        .optional()
        .isString()
        .isAlpha()
        .isLength({ min: 1 }),
      body("email")
        .optional()
        .isEmail(),
      body("password")
        .optional()
        .isLength({ min: 1 }),
      body("currencyId")
        .optional()
        .isNumeric()
    ],

所以我有一个问题,因为我在请求中始终发送空值,并且出现此错误:

code: 400
message: "name: Invalid value,name: Invalid value,name: Invalid value,surname: Invalid value,surname: Invalid value,surname: Invalid value,email: Invalid value,password: Invalid value"
success: false

我该如何解决这个问题,最好是在前端?

好的,我解决了这个问题:.optional({nullable:true})

0 个答案:

没有答案
相关问题