Как добавить запись в базу данных, если не все поля заполнены? - PullRequest
0 голосов
/ 22 октября 2018

В моем приложении React я делаю выборку, чтобы добавить строку в базу данных (PostgreSQL):

addToDatabase() {
 fetch(`${'127.0.0.1:3000'}/add`, {
  method: 'PUT',
  body: JSON.stringify(this.state.person),
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  }
})
  ...
}

this.state.person обычно имеет следующий формат:

{id: 1, surname: 'Jones', name: 'John', city: 4}

В бэкэнде я использую sequelize для добавления строки в базу данных:

app.route('/add')
  .put((req, res) => {
    Person.create({
      surname: req.body.surname,
      name: req.body.name,
      city: req.body.city      
    });
    res.send(JSON.stringify({ success: true }));
  });

Иногда мне нужно добавить строку только с фамилией.Таким образом, this.state.person имеет следующий формат:

{id: 1, surname: 'Jones'}

Но я получаю сообщение об ошибке:

Unhandled rejection SequelizeDatabaseError: invalid input syntax for integer: ""

Backend всегда ожидает всех заполненных полей,Как добавить запись с выборочно заполненными полями?

1 Ответ

0 голосов
/ 22 октября 2018

req.body.city будет установлено неопределенным, и это приведет к ошибке

Use NULL for "empty" values in a numeric column 
The empty string '' can only be used in character types like text or varchar
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...