#javascript #node.js #json #backend
#javascript #node.js #json #серверная часть
Вопрос:
Я уверен, что это было обработано раньше, но я не смог найти другого ответа на ситуацию от Google. Когда я использую postman для получения маршрута, он возвращает следующие ошибки:
- [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 спасибо, я пытался решить это самостоятельно, и, похоже, проблема решена. Большое спасибо