RESP & JavaScript
Converting RESP to and from JavaScript
When running Redis commands from within a function using the client.call
API, the reply is parsed as a resp3 reply and converted to a JS object using the following rules:
resp 3 | JS object type |
---|---|
status |
StringObject with a field called __reply_type and value status (or error if failed to convert to utf8) |
bulk string |
JS String (or error if failed to convert to utf8) |
Error |
Raise JS exception |
long |
JS big integer |
double |
JS number |
array |
JS array |
map |
JS object |
set |
JS set |
bool |
JS boolean |
big number |
StringObject with a field called __reply_type and value big_number |
verbatim string |
StringObject with 2 additional fields: 1. __reply_type and value verbatim 2. __format with the value of the ext in the verbatim string (or error if failed to convert to utf8) |
null |
JS null |
When running Redis commands from within a function using the client.callRaw
API, the reply is parsed as a resp3 reply and converted to a JS object using the following rules:
resp 3 | JS object type |
---|---|
status |
JS ArrayBuffer with a field called __reply_type and value status |
bulk string |
JS ArrayBuffer |
Error |
Raise JS exception |
long |
JS big integer |
double |
JS number |
array |
JS array |
map |
JS object |
set |
JS set |
bool |
JS boolean |
big number |
StringObject with a field called __reply_type and value big_number |
verbatim string |
JS ArrayBuffer with 2 additional fields: 1. __reply_type and value verbatim 2. __format with the value of the ext in the verbatim string |
null |
JS null |
JavaScript to RESP conversion
JS type | RESP2 | RESP3 |
---|---|---|
string |
bulk string |
bulk string |
string object with field __reply_type=status |
status |
status |
Exception | error |
error |
big integer |
long |
long |
number |
bulk string |
double |
array |
array |
array |
map |
array |
map |
set |
array |
set |
bool |
long |
bool |
string object with field__reply_type=varbatim and __format=txt |
bulk string |
verbatim string with format as txt |
null |
resp2 null |
resp3 null |