produccion platzi mega horizon rethinkdb

platzi - En RethinkDB, ¿cuál es la forma más fácil de verificar si existe una base de datos o una tabla?



rethinkdb en produccion (3)

Una forma en que sé que puedo hacerlo es haciendo una lista a través de dbList() y tableList() y luego buscando lo que quiero en los resultados.

hay una manera mas facil?

EDITAR

Mi objetivo es crear una tabla en caso de que no exista.


En JavaScript, dada una matriz de nombres de tablas, la forma más corta es

const tables = [''table1Name'', ''table2Name'', ...] const db = ''myDb'' r(tables) .difference(r.db(db).tableList()) .forEach(table => r.db(db).tableCreate(table)) .run(connection)


Para la comprobación de la tabla existente he encontrado la siguiente solución:

r.tableList().run(connection); //[''people'']

esto le devolverá una matriz de las tablas que están definidas en la base de datos predeterminada, por ejemplo: [''personas'']. (Si desea configurarlo, haga esto: connection.use (''test'');)

entonces podemos verificar si la matriz contiene el nombre de nuestra tabla para crear.

_.some(tableNames, tableName)

ponlo todo junto:

if (!_.isNil(tableName) && _.isString(tableName) && !_.isNil(connection)) { r.tableList().run(connection).then(function(tableNames) { if (_.includes(tableNames, tableName)) { return r.tableCreate(tableName).run(connection); } else { return; } }); }


Si desea crear una base de datos si no existe, u obtener un valor como "la base de datos ya existe" si existe, podría hacer algo como lo siguiente:

r.dbList().contains(''example_database'') .do(function(databaseExists) { return r.branch( databaseExists, { dbs_created: 0 }, r.dbCreate(''example_database'') ); }).run();

Devolverá lo siguiente si se crea:

{ "config_changes": [ { "new_val": { "id": "1ee7ddb4-6e2c-43bb-a0f5-64ef6a6211a8", "name": "example_database" }, "old_val": null } ], "dbs_created": 1 }

Y esto si ya existe:

{ "dbs_created": 0 }