#javascript #node.js #express #redis #node-redis
Вопрос:
В принципе, приведенная ниже служба put, которая должна выполнять простой Redis-cli> УСТАНОВИТЬ ЗНАЧЕНИЕ КЛЮЧА>, не может работать. Операции get работают хорошо. Также работает отдельное использование модуля redis и вызов функции set. Но при вызове из app.put() пара КЛЮЧ/ЗНАЧЕНИЕ не регистрируется.
Что за черт???
// express setup
const REDIS_REST_PORT = 3000;
const express = require('express');
const router = express.Router();
const app = express();
const bodyParser = require('body-parser');
app.use(bodyParser.json());
// redis setup
const REDIS_CONNECTION_STRING = "redis://127.0.0.1:6379";
const RedisCli = require('redis').createClient(REDIS_CONNECTION_STRING);
RedisCli.on('connect', function() {
console.log('Connected to REDIS');
});
RedisCli.on('error', function(err) {
console.log('/! REDIS ERROR: ' err);
});
// GET .../get/KEY (works well !!)
app.get('/get/:key', function(req, res) {
RedisCli.get( req.params.key, function (err, result) {
if (err) {
res.send(err,500);
} else {
res.send(result);
}
});
});
// PUT .../set/KEY body (can't work KEY/VALUE never registered ??)
app.put('/set/:key', function(req, res) {
var value = "'" JSON.stringify(req.body) "'";
console.log("SET " req.params.key " " value);
RedisCli.set( req.params.key, value,
function (err, result) {
if (err) {
res.send(err,500);
} else {
res.send(result);
}
});
});
// Start REST server
app.listen(REDIS_REST_PORT, () =>
console.log('Listening on port ' REDIS_REST_PORT '...'));
Комментарии:
1. Итак, после множества проб и ошибок он неожиданно заработал правильно. Некоторые подсказки: — Я удалил простую кавычку, окружающую строковое значение JSON — Я провел новый тест с изменением ключа и значения JSON без пробела внутри… И, и, и вдруг это сработало.
Ответ №1:
В конце концов это сработало — не понимаю, как и почему — см. Мой комментарий.