从 Replit 数据库获取密钥不起作用

Getting Key From Replit Database Not Working

这是我的代码:

const Database = require("@replit/database");
const db = new Database();

db.set("test", "wow").then(() => {});
console.log(db.list().then(keys => {}));

我安装了数据库包,它说我的 repl 的数据库部分有一个键,但它不是控制台记录键列表,我没有收到错误。只有这个在控制台中:

Promise { <pending> }
Hint: hit control+c anytime to enter REPL.

好像有两个问题:

  1. 两个 promise 链是断开的,所以它是 setlist 之间的竞争条件——不确定哪个会先触发。
  2. 使用 thens -- console.log() 正在同步记录待处理的承诺,而不是已完成承诺的结果,后者仅在 then 回调中可用。
db.set("test", "wow")
  .then(() => db.list())           // ensure `list` runs after `set` resolves
  .then(keys => console.log(keys)) // ensure `keys` are logged after `list` resolves

你也可以使用async/await:

(async () => {
  await db.set("test", "wow");
  const keys = await db.list();
  console.log(keys);
})();

这通常被认为阅读起来更直观,因为它类似于同步代码,但它只是 then 方法的语法糖。