gpt4 book ai didi

javascript - 如果需要在 rethinkdb 中创建数据库

转载 作者:搜寻专家 更新时间:2023-11-01 00:12:55 25 4
gpt4 key购买 nike

这是我第一次与 rethinkdb 互动,它看起来不错,但我遇到了一些问题......

想法很简单:如果尚未创建数据库,则创建一个数据库。

代码简单,或者说好吧,代码的思路:

module.exports = function(r, config) {
var connection = null;

r.connect(config.rdb, function(err, conn) {
if (err) throw err
connection = conn;
});

r.dbList()
.contains('semestres')
.do(function(dbExists) {
return r.branch(
dbExists,
{ created: 0 },
r.dbCreate('semestres')
);
})
.run(connection, function(err) {
if (err) throw err;
});
};

所以,这只是创建一个连接并将连接分配给变量,然后检查数据库“semestres”是否存在,如果存在,则什么也不做,否则,创建它。

但不是,我在运行服务器时收到此错误:

Unhandled rejection RqlDriverError: First argument to `run` must be an open connection.
at new RqlDriverError (/home/nano/Dev/semestres/node_modules/rethinkdb/errors.js:14:13)
at FunCall.TermBase.run (/home/nano/Dev/semestres/node_modules/rethinkdb/ast.js:129:29)
at module.exports (/home/nano/Dev/semestres/config/database.js:20:6)
at Object.<anonymous> (/home/nano/Dev/semestres/server.js:10:29)
at Module._compile (module.js:428:26)
at Object.Module._extensions..js (module.js:446:10)
at Module.load (module.js:353:32)
at Function.Module._load (module.js:308:12)
at Function.Module.runMain (module.js:469:10)
at startup (node.js:124:18)
at node.js:882:3

那么,我如何在 rethinkdb 中进行此类操作?

最佳答案

因为这是 JavaScript 并且代码是异步的,所以您的 dbList 查询无法访问您的 connection 变量。您需要将您的dbList 代码放在内部 连接回调中。

module.exports = function(r, config) {
var connection = null;

r.connect(config.rdb, function(err, conn) {
if (err) throw err
connection = conn;
r.dbList()
.contains('semestres')
.do(function(dbExists) {
return r.branch(
dbExists,
{ created: 0 },
r.dbCreate('semestres')
);
})
.run(connection, function(err) {
if (err) throw err;
});
};
});

这与 RethinkDB 本身无关,但与作用域在 JavaScript 中的工作方式有关。

关于javascript - 如果需要在 rethinkdb 中创建数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30142041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com