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

奈米

这是我与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中进行此类操作?

豪尔赫·席尔瓦(Jorge Silva)

因为这是JavaScript,并且代码是异步的,所以您的dbList查询无权访问connection变量。您需要将dbList代码放入connect回调中。

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中的工作方式有关。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果我不使用数据库,是否需要在firebase中更改安全规则?

来自分类Dev

我需要在数据库中创建一个视图

来自分类Dev

需要在Joomla中更改数据库密码

来自分类Dev

如果我在C#代码中使用继承,是否需要在数据库中包含“类型”列?

来自分类Dev

如果我要在数据库中存储两条记录,则需要消息表的单位

来自分类Dev

RethinkDB中的表与数据库性能

来自分类Dev

我需要在循环中创建多个数据库连接吗?

来自分类Dev

如果FuelPHP中不存在,则创建数据库

来自分类Dev

SSIS中的登台表位置-是否需要在同一数据库中?

来自分类Dev

从命令行创建RethinkDB数据库

来自分类Dev

如何防止RethinkDB创建测试数据库

来自分类Dev

为什么需要在我们的应用程序中刷新数据库视图?

来自分类Dev

如何判断数据库是否需要在Android中升级?

来自分类Dev

我需要在未链接到任何活动的Java类中打开数据库

来自分类Dev

需要在子程序中退出语句后更新数据库

来自分类Dev

是否需要在数据库中存储电子邮件确认代码?

来自分类Dev

我需要在控制器中创建一个函数,以显示由数据库确定的文件名的特定视图。-laravel

来自分类Dev

如果我使用AWS rds作为数据库实例,是否需要在AWS EC2上安装mysql?

来自分类Dev

我需要创建数据库表

来自分类Dev

如果需要创建多个表,如何使用Room数据库?

来自分类Dev

Hibernate不要在数据库中创建我的表

来自分类Dev

SchemaExport不要在数据库中创建我的表

来自分类Dev

要在数据库中更新的数据(如果存在)-否则应在SQL Server中插入新记录

来自分类Dev

如何在RethinkDB中重命名数据库

来自分类Dev

在RethinkDB数据库中,文档ID是否唯一?

来自分类Dev

Codeigniter-如果用户在数据库中创建了条目,则仅允许用户从数据库中删除

来自分类Dev

如果仅从数据库获取数据,是否需要实体?

来自分类Dev

用于删除数据库(如果存在)并在OrientDB中创建新数据库的命令

来自分类Dev

如果在Aurora中启用MultiAZ,是否需要提供多个数据库实例?

Related 相关文章

  1. 1

    如果我不使用数据库,是否需要在firebase中更改安全规则?

  2. 2

    我需要在数据库中创建一个视图

  3. 3

    需要在Joomla中更改数据库密码

  4. 4

    如果我在C#代码中使用继承,是否需要在数据库中包含“类型”列?

  5. 5

    如果我要在数据库中存储两条记录,则需要消息表的单位

  6. 6

    RethinkDB中的表与数据库性能

  7. 7

    我需要在循环中创建多个数据库连接吗?

  8. 8

    如果FuelPHP中不存在,则创建数据库

  9. 9

    SSIS中的登台表位置-是否需要在同一数据库中?

  10. 10

    从命令行创建RethinkDB数据库

  11. 11

    如何防止RethinkDB创建测试数据库

  12. 12

    为什么需要在我们的应用程序中刷新数据库视图?

  13. 13

    如何判断数据库是否需要在Android中升级?

  14. 14

    我需要在未链接到任何活动的Java类中打开数据库

  15. 15

    需要在子程序中退出语句后更新数据库

  16. 16

    是否需要在数据库中存储电子邮件确认代码?

  17. 17

    我需要在控制器中创建一个函数,以显示由数据库确定的文件名的特定视图。-laravel

  18. 18

    如果我使用AWS rds作为数据库实例,是否需要在AWS EC2上安装mysql?

  19. 19

    我需要创建数据库表

  20. 20

    如果需要创建多个表,如何使用Room数据库?

  21. 21

    Hibernate不要在数据库中创建我的表

  22. 22

    SchemaExport不要在数据库中创建我的表

  23. 23

    要在数据库中更新的数据(如果存在)-否则应在SQL Server中插入新记录

  24. 24

    如何在RethinkDB中重命名数据库

  25. 25

    在RethinkDB数据库中,文档ID是否唯一?

  26. 26

    Codeigniter-如果用户在数据库中创建了条目,则仅允许用户从数据库中删除

  27. 27

    如果仅从数据库获取数据,是否需要实体?

  28. 28

    用于删除数据库(如果存在)并在OrientDB中创建新数据库的命令

  29. 29

    如果在Aurora中启用MultiAZ,是否需要提供多个数据库实例?

热门标签

归档