我正在尝试根据从根路由访问的路由创建自定义列表。我使用快速路由参数来获取列表的名称,并将一些预定义的值添加到列表中。
但我想首先检查指定的名称(列表名称)是否还没有被Redis数据库中的另一个列表使用。我正在使用client.EXISTS命令检查指定的键(列表名称)是否存在,但它似乎根本不起作用。以下是我的代码:
app.get("/:customListName", (req, res) => {
const customListName = req.params.customListName;
console.log(customListName);
client.exists(customListName, (err, reply) => {
if (reply === 0) {
console.log("Doesn't exist!");
const multi = client.multi();
const customList = ["Have fun!", "Play Games!", "Watch Movies!"];
customList.forEach((item) => {
multi.rPush(customListName, item);
});
multi.exec();
} else {
console.log("Exists!");
}
});
});
从代码中,我记录了访问的路由和一条消息,该消息指定是否存在列表或其他内容,但我惊讶地看到,显示了该路由(在本例中为‘home’),但没有记录任何消息,如下所示:
[nodemon] 2.0.20
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node app.js`
home
1条答案
按热度按时间vfh0ocws1#
Node Redis 4.x使用承诺而不是回调。我的猜测是您正在使用该版本,而这就是您问题的根源。试试这个:
不是100%确定,但我认为
.exists
命令返回一个布尔值。但无论如何,它肯定是真的或假的,所以这段代码将以任何一种方式工作。