Почему объединение Node Express и Redis не может установить простую пару Ключ-значение?

#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:

В конце концов это сработало — не понимаю, как и почему — см. Мой комментарий.