Я только начал использовать node.js и node-mysql, и я столкнулся со следующей проблемой: Я отправляю данные от клиента (Angular.js). Сервер (node.js) отправляет его в базу данных mysql. Server.js (часть):Кодировка в node-mysql
var express = require('express');
var app = express();
mysql = require('node-mysql2');
var connection = mysql.createConnection(someSettings);
...skipped part...
app.put('/api/announcements', function(req, res) {
connection.execute('INSERT INTO announcements(title, text) VALUES(?, ?)', [req.body.title, req.body.text]);
res.send({status: true});
});
вещь, если я посылаю латинские буквы полей запроса title
и text
, это нормально. Но если я пытаюсь отправить кириллицы те, появляется следующий вопрос:
app.put('/api/announcements', function(req, res) {
console.log(req.body.title, req.body.text); // <- shows the whole strings
...
, но в таблице есть только часть строки! (Я имею в виду, поля title
и text
новой записи состоят только часть строки
Скриншоты объяснить:.
UPD: вот пример, чтобы вы могли попробовать его самостоятельно. В архиве находится файл экспорта таблицы (announcements.sql) и папка www для проекта cordova. Вам также понадобятся плагины: экспресс, mysql2, обещание, nodejs-websocket. Идея состоит в том, что я запускаю 2 сервера: на 88 портах для обработки REST запросов и на 89 для трансляции изменений для всех подключенных клиентов. Попробуйте выполнить следующий тест: откройте страницу индекса в броке wser и попытайтесь добавить эти строки: 1. Есть место, где заканчивается тротуар 2. Есть место, где заканчивается тротуар; sqlfiddle.com/#!2/96085/1 db.tt/GfvjmXtU
Ваше сообщение недостаточно ясно, чтобы понять, что вы имеете в виду; есть ли ошибка? Я не знаю русский, это русский неправильно? На вторичной ноте что-то, что, безусловно, стоит сделать, - это прекратить использование библиотеки, специфичной для mysq, и вместо этого использовать нечто вроде библиотеки «sequelize», чтобы вы не выдавали «sql-запросы», а просто запрашивали записи, совместимые с моделью, быть написанным и прочитанным. –
Да, есть ошибка, потому что в базу данных записывается только половина строки. Что касается продолжения, спасибо за совет, я попробую. Но меня беспокоит одно: я могу ошибаться, но разве он не использует модуль node-mysql? Если это так, может быть одна и та же проблема –
разница в том, как вы называете sequelize; вы не говорите ему, что выполняете SQL-инструкции, вы просто манипулируете записями в объекте, а sequelize заботится о том, чтобы убедиться, что ваш SQL-сервер обновлен соответствующим образом. Что касается ошибки: можете ли вы показать, что вы ожидаете увидеть, что вы видите вместо этого, и каковы данные в вашей таблице SQL? –