#node.js #json
#node.js #json
Вопрос:
Я пытаюсь подготовить свой код для отправки json обратно моему чат-боту, может кто-нибудь, пожалуйста, сказать мне, почему я получаю сообщение об ошибке при этом:
const data = '{ "Company Name": companyname, "service type": service }'
try {
const user = JSON.parse(data)
} catch(err) {
console.error(err)
}
это мой полный нижний код, который работает отдельно от этого
//=======================================================================================
// Get the Client data from database
//=======================================================================================
app.get("/Getcompany", function(request, response) {
const cname = request.query.cname, query = `select * from clientdata_nsw where companyname = ${connection.escape(
cname
)}`;
connection.query(query, function(err, rows) {
if (err) {
console.log(err);
return;
}
const data = '{ "Company Name": companyname, "service type": service }'
try {
const user = JSON.parse(data)
} catch(err) {
console.error(err)
}
rows.forEach(function(result) {
console.log(
result.companyname,
result.service,
result.phone,
result.open_times,
result.rating_facebook,
result.rating_goggle
);
});
response.json({})
});
})
// listen for requests :)
var listener = app.listen(process.env.PORT, function () {
console.log('Your app is listening on port ' listener.address().port);
});
Комментарии:
1. Какую ошибку вы получаете в данный момент?
2. C:UsersAdam . WolarczukDesktopProjectsnodetest>узел db.js Ваше приложение прослушивает порт 60402 (узел: 22868) [DEP0096] Предупреждение об устаревании: timers.unenroll() устарел. Пожалуйста, используйте вместо этого clearTimeout. C:UsersAdam . WolarczukDesktopProjectsnodetestnode_modulesmysqllibprotocolParser.js:78 выдает ошибку; // Повторно выбрасывает ошибки, отличные от MySQL ^ Ошибка синтаксиса: неожиданный токен c в JSON на позиции 18 в JSON.parse (<анонимный>) при запросе._callback C:UsersAdam . WolarczukDesktopProjectsnodetest>
3. @AdamWolarczuk Можете ли вы утешить значение cname? вы получаете фактическое значение?
4. я уверен, что получаю название компании, которое я передаю
Ответ №1:
Ошибка присутствует в самой первой строке
const data = '{ "Company Name": companyname, "service type": service }'
JSON.parse(data)
Вы должны исключить companyname и service, потому что они не могут быть проанализированы анализатором JSON, иначе используйте объект JS вместо разбора строки и формирования объекта JS. Я не понимаю, почему у вас есть эти строки в коде, потому что они вообще ни для чего не используются.
const data = '{ "Company Name": "companyname", "service type": "service" }'
JSON.parse(data)
Весь код переписан с использованием стандартов ES6.
const PORT = process.env.PORT;
app.get("/Getcompany", async (request, response) => {
const cname = request.query.cname,
query = `select * from clientdata_nsw where companyname = ${connection.escape(
cname
)}`;
const data = '{ "Company Name": "companyname", "service type": "service" }';
try {
const user = JSON.parse(data);
} catch (err) {
console.error(err);
}
try {
const results = await connection.query(query);
results.forEach(row => {
console.log(
row.companyname,
row.service,
row.phone,
row.open_times,
row.rating_facebook,
row.rating_goggle
);
});
} catch (error) {
console.error(error);
}
response.json({});
});
app.listen(PORT, () => {
console.log(`Your app is listening on port ${PORT}`);
});
Комментарии:
1. Я использую это в этой части ); }); response.json({}) }); }) зная меня, я делаю это совершенно неправильно 🙂
2. я добавил это в row.foreach, и возникла та же проблема
3. просто вопрос, почему я добавляю синтаксический анализ дважды, если вы посмотрите, я добавляю его в цикле try
4. да, хорошо, я думаю, что нашел проблему const data = ‘{ «Название компании»: «companyname», «тип сервиса»: «service»}’; не сохраняет отображение моих ответов из базы данных, есть идеи