Мой синтаксис для почтового запроса JSON:

{
    "id": 3,
    "type": "Colonial",
    "Location": 1.1,
    "Postnumber": 1424,
    "City": "Helsinki",
    "Reservation_time": "1112"
}

These column hold values in postgresDB
id = serial
type = varchar
location = point
postnumber = int
City = varchar
Reservation time = varchar

Я не могу понять, что не так, как ошибка, которую я получаю, неверного типа для целого числа.

Редактировать: добавлены модель конечной точки и сервис.

Модель:

exports.createTila = async (id, type, location, postnumber, city, reservation_time) => {
  try {
    const result = await client.query(
      "INSERT INTO tila (id, type, location, postnumber, city, reservation_time) VALUES$
      [id, type, location, postnumber, city, reservation_time]
    );
    return result.rows;
  } catch (err) {
    throw new Error(err);
  }
};

Обслуживание:

exports.createTila = async (request, response) => {
  try {
    const tilaObject = request.body;
    const newTila = await tilaModel.createTila(tilaObject);
    response.status(200).send(newTila);
  } catch (err) {
    response.status(400).send({ message: err.message });
  }
};
0
Sampo Kaarenmaa 27 Дек 2019 в 16:10
Я думаю, что проблема в location с типом point, я думаю, что json должен иметь значения latitude и longitude, а не число с плавающей запятой, например 1.1.
 – 
Mojtaba Haddadi
27 Дек 2019 в 16:17
Каков правильный синтаксис JSON для типа точки?
 – 
Sampo Kaarenmaa
27 Дек 2019 в 18:14
Я добавил это как ответ.
 – 
Mojtaba Haddadi
27 Дек 2019 в 18:26

3 ответа

Я думаю, что проблема в расположении с типом point, ваш json должен иметь значения latitude и longitude, а не число с плавающей точкой, как 1.1

{
   "id":3,
   "type":"Colonial",
   "Location":{
      "latitude":35.55689,
      "longitude":51.54865
   },
   "Postnumber":1424,
   "City":"Helsinki",
   "Reservation time":"1112"
}
0
Mojtaba Haddadi 27 Дек 2019 в 18:25
Такая же ошибка возникает с широтой и долготой.
 – 
Sampo Kaarenmaa
27 Дек 2019 в 18:31

Проверьте поля вашей таблицы, любое значение поля становится нулевым, поэтому оно выдает это исключение. И поменяй поля

{
    "id": 3,
    "type": "Colonial",
    "latitude": 1.1,
    "longitude " : 1.1
    "postnumber": 1424,
    "city": "Helsinki",
    "reservation time": "1112"
}

Здесь широта и долгота имеют тип двойной точности

0
Divyesh_08 27 Дек 2019 в 20:22
Изменил поле «location» следующим образом: «location»: [11241,124124], но я получаю ту же ошибку.
 – 
Sampo Kaarenmaa
27 Дек 2019 в 18:22
Вы проверяли значения полей?
 – 
Divyesh_08
27 Дек 2019 в 20:21

Я нашел свою ошибку:

Вместо создания объекта в сервисе, как это

exports.createTila = async (request, response) => {
  try {
    const tilaObject = request.body;
    const newTila = await tilaModel.createTila(tilaObject);
    response.status(200).send(newTila);
  } catch (err) {
    response.status(400).send({ message: err.message });
  }
};

Мне нужно также определить значения столбцов БД в сервисе, например так:

exports.createTila = async (request, response) => {
  try {
    const {id, type, location, postnumber, city, reservation_time} = request.body;
    const newTila = await tilaModel.createTila(id, type, location, postnumber, city, reservation_time);
    response.status(200).send(newTila);
  } catch (err) {
    response.status(400).send({ message: err.message });
  }
};
0
Sampo Kaarenmaa 28 Дек 2019 в 15:12