получение объекта json с изображениями массива возвращает неожиданный конец json

#javascript #node.js #json #backend

#javascript #node.js #json #серверная часть

Вопрос:

Я уверен, что это было обработано раньше, но я не смог найти другого ответа на ситуацию от Google. Когда я использую postman для получения маршрута, он возвращает следующие ошибки:

  1. [0] Ошибка синтаксиса: неожиданный конец JSON inpu [0]в JSON.parse () [0]в model.get (C:UsersEA_MaDesktopApp-projectsmajeksCorpmodelsServices.js:55:23 ) [0] в model.get (C:UsersEA_MaDesktopApp-projectsmajeksCorpnode_modulessequelizelibmodel.js:3465:41 ) [0] в model.get (C:UsersEA_MaDesktopApp-projectsmajeksCorpnode_modulessequelizelibmodel.js:3499:33 ) [0] в model.toJSON (C:UsersEA_MaDesktopApp-projectsmajeksCorpnode_modulessequelizelibmodel.js:4368:12 ) [0] в JSON.stringify () [0] в stringify (C:UsersEA_MaDesktopApp-projectsmajeksCorpnode_modulesexpresslibresponse.js:1123:12 ) [0] в ServerResponse.json (C:UsersEA_MaDesktopApp-projectsmajeksCorpnode_modulesexpresslibresponse.js:260:14 ) [0] в C:UsersEA_MaDesktopApp-projectsmajeksCorproutesapiservices.js:179:30 [0] в processTicksAndRejections (internal/process/task_queues.js:97:5)

Это затронутая схема:

      "use script";
     module.exports = (sequelize, Datatypes) => {return sequelize.define("service",{
    id: {
    type: Datatypes.UUID,
    primaryKey: true,
    defaultValue: Datatypes.UUIDV4,

  title: {
    type: Datatypes.STRING,
    required: true,
    allowNull: true,
  },
  category: {
    type: Datatypes.STRING,
    required: true,
    allowNull: true,
  },
  description: {
    type: Datatypes.STRING,
    required: true,
    allowNull: true,
  },
  picture: {
    type: Datatypes.STRING,
  },
  service_gallery: {
    type: Datatypes.STRING,
    defaultValue: null,
    get: function () {
      return JSON.parse(this.getDataValue("service_gallery"));
    },
    set: function (val) {
      return this.setDataValue("service_gallery", JSON.stringify(val));
    },
    allowNull: true,
  },
  date: {
    //Exakt den datum som personen registrera sig
    type: Datatypes.DATE,
    defaultValue: Datatypes.NOW,
  },

  //This is the columns or database
  updated_at: { type: Datatypes.DATE },
  deleted_at: { type: Datatypes.DATE },
  },

  {
  underscored: true, //This is created for it
  paranoid: true, //Database won't really delete information from database.
  }
  );
  };
  

Это был метод, который я вызвал.

 router.get("/:category/:title", async(req, res) => {
 const errors = {};
 await db.service.findOne({
    where: {[Op.and]: [{category: req.params.category}, {title: req.params.title}]}
  })
  .then((service) => {
  if (!service) {
    errors.noservice = "Nothing was found";
    res.status(404).json(errors);
    return; 
    }
    if(service) return res.json(service);
    })
    .catch((err) => console.log(err));
    });
  

Я думаю, что ошибка возникает из этой строки в схеме:
возвращает JSON.parse(this.getDataValue(«service_gallery»));

Комментарии:

1. Вы уверены, что вам нужно использовать json.parse? Проверьте выходные данные this.getDataValue(«service_gallery») и проверьте, является ли это строковым json.

2. @NickHolden Я использую его для массива, именно так я получаю массив, поскольку я использую Sequelize.

3. Да, я не могу проверить вывод, поскольку он, похоже, возвращает SyntaxError: неожиданный конец ввода JSON

4. выведите this.getDataValue(«service_gallery»). Можете ли вы добавить результат этого?

5. @NickHolden спасибо, я пытался решить это самостоятельно, и, похоже, проблема решена. Большое спасибо