node_redis rpop после lpush с массивом - PullRequest
0 голосов
/ 18 декабря 2018

Когда я использую rpop в списке, в который я ранее помещал массив, содержащий 4 значения, Redis возвращает все 4 значения, как и ожидалось.Моя проблема в том, что они возвращаются как отдельные значения.Есть ли способ заставить Redis возвращать массив, содержащий 4 значения, а не возвращать 4 значения, которые содержит массив?Я использую клиент node_redis https://github.com/NodeRedis/node_redis. Вот некоторый код, чтобы дать вам представление о том, что я делаю.

redisClient.lpush(data.pushKey, data.rowTest);

data.rowtest выглядит следующим образом [0, 496, 1, 48].

 redisClient.rpop(data.popKey, function (err, res) {
    if (err) { console.log(err); }

    if (res !== null) {
    client.send("fromList", { content: res });
    console.log(res);
    }
    });

Я ожидаю вывод [0, 496, 1, 48] водна строка, но я получаю 0 496 1 48 каждая на отдельной строке.

Хорошо, я уверен, что мне нужно научиться работать с асинхронным JavaScript, прежде чем я решу свою проблему выше.

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Хорошо, это должно было быть более очевидным, и это оставляет меня с некоторыми другими вопросами, но я решил свою проблему с помощью JSON.stringfy () перед нажатием и JSON.parse () после появления.Я собираюсь догадаться, что разработчики node_redis хотели сохранить сходство между массивами и списками Redis, и поэтому взяли значения массивов в список Redis ... этот список или списки Redis являются просто массивами, и поэтому такие массивы можно просто объединить всуществующий список.

0 голосов
/ 18 декабря 2018

Вам необходимо решить, является ли это одним элементом из 4 элементов.

Если вы хотите рассматривать каждое значение как отдельный элемент, вам нужно отправить их отдельно, см. этот ответ , тогда вам нужно будет спросить все 4, когда вы хотите, чтобы вернуть его обратно.

Если вы хотите, чтобы весь массив представлял собой одно значение, вы можете остаться с вашим кодом и преобразовать результат обратно в массив с помощью res.split('\n')

...