从 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.
好像有两个问题:
- 两个 promise 链是断开的,所以它是
set
和 list
之间的竞争条件——不确定哪个会先触发。
- 使用
then
s -- 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
方法的语法糖。
这是我的代码:
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.
好像有两个问题:
- 两个 promise 链是断开的,所以它是
set
和list
之间的竞争条件——不确定哪个会先触发。 - 使用
then
s --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
方法的语法糖。