Javascript Redis ReJSON系统地向我返回两个错误:在非终端路径上缺少键,并且必须在根目录下创建新对象
第二个错误相对难以理解。 第一个更具挑战性 我尝试了不同的组合来克服这个错误,但没有任何改进。 我的控制台返回给我: //控制台日志>第一个承诺{ReplyError:ERR必须创建新对象 在根上创建 在parseError处(node_modules/redis parser/lib/parser.js:193:12) 在parseType(node_modules/redis parser/lib/parser.js:303:14)命令:“JSON.SET”,args:['jsonTest7', “.user.here.now”, “{.nestedValue”:“我是一个嵌套值”}'],代码:'ERR'}//console log>second promise//console log>jsonTest7响应: 空的 下面是我的snippet.js:Javascript Redis ReJSON系统地向我返回两个错误:在非终端路径上缺少键,并且必须在根目录下创建新对象,javascript,node.js,redis,redisjson,Javascript,Node.js,Redis,Redisjson,第二个错误相对难以理解。 第一个更具挑战性 我尝试了不同的组合来克服这个错误,但没有任何改进。 我的控制台返回给我: //控制台日志>第一个承诺{ReplyError:ERR必须创建新对象 在根上创建 在parseError处(node_modules/redis parser/lib/parser.js:193:12) 在parseType(node_modules/redis parser/lib/parser.js:303:14)命令:“JSON.SET”,args:['jsonTest7
const redis=require("redis");
rejson = require('redis-rejson');
const {promisify} = require('util');
rejson(redis); /* important - this must come BEFORE creating the client */
let client= redis.createClient({
port:6380,
host:'localhost',
});
const setAsync = promisify(client.json_set).bind(client);
const getAsync = promisify(client.json_get).bind(client);
const existsAsync= promisify(client.exists).bind(client);
client.exists('jsonTest2', function(err, reply) {
if (reply === 1) {
return true
} else {
return false
}
});
async function isExist(object){
var isExist= await existsAsync(object).then(data=> data)
.catch((err) => console.error(err));
console.log("isExist: ", typeof isExist)
if(isExist !== 1) {
console.log("creating object...")
await setAsync(object, '.', '{"here":"something"}');
console.log("object created: " + object)
}
}
async function myFunc(object, rootKey) {
console.log("then 1")
await isExist(object)
await setAsync(object, ".user.here.now", '{".nestedValue": "I am a nested value"}')
.catch((err) => console.error(err));
console.log("then 2")
const res = await getAsync(object, '.user.here.now')
.catch((err) => console.error(err));
console.log(object + " response: ", res)
}
myFunc("jsonTest7")
任何暗示都很好,
谢谢第一个错误表示您正在尝试创建一个新文档-即RedisJSON密钥不存在-但只提供一个子文档(即“user.here.now”)。新的键必须设置为根('.')级别,如您当前的代码示例所示。如果我理解清楚,您必须为每个对象重复,我认为这是非常有效的,希望有更有效的方法来实现这一点嘿,Itamar,好的,如果我在这条路上,很高兴,但我当前的示例返回我:
在非终端路径级别错误缺少键
,我尝试过谷歌搜索,但到目前为止还没有找到解决问题的方法,也许你有一个提示?在我的测试中,似乎我必须重申,在创建根之后,手动一个接一个地创建每个级别,但我想肯定有一个建筑功能来处理这个问题