为了账号安全,请及时绑定邮箱和手机立即绑定

如何移动代码以从我的文件中设置 ut DB 和集合并只需要它?

如何移动代码以从我的文件中设置 ut DB 和集合并只需要它?

慕丝7291255 2023-02-24 15:31:17
所以,假设我有这段完美运行的代码。const {  Database} = require("arangojs");var db = new Database({  url: "http://localhost:8529"});const database_name = "cool_database";db.useBasicAuth("username", "password123");db.listDatabases()  .then(names => {    if (names.indexOf(database_name) > -1) {      db.useDatabase(database_name);      db.get();    } else {      db.createDatabase(database_name)        .then(() => {          db.useDatabase(database_name);          db.collection("my-collection").create();        });    }  });const collection = db.collection("my-collection");const getJobFromQueue = () => {  return db.query({      query: "FOR el IN @@collection FILTER DATE_TIMESTAMP(el.email.sendAfter) < DATE_NOW() AND el.status != 'processed' AND el.status != 'failed' SORT el.email.sendAfter LIMIT 1 RETURN el",      bindVars: {        "@collection": "my-collection"      }    })    .then(cursor => cursor.all());}但是我想将最上面的代码移到另一个文件中,只需要 db 和 collection,我该怎么做呢?一直在努力让它工作太久了。const {  db,  collection} = require("./db");const getJobFromQueue = () => {  return db.query({      query: "FOR el IN @@collection FILTER DATE_TIMESTAMP(el.email.sendAfter) < DATE_NOW() AND el.status != 'processed' AND el.status != 'failed' SORT el.email.sendAfter LIMIT 1 RETURN el",      bindVars: {        "@collection": "my-collection"      }    })    .then(cursor => cursor.all());}
查看完整描述

1 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

完全按照你的建议去做。将代码的上半部分移动到db.js并公开db和collection使用exports:


数据库.js:


const {

    Database

} = require("arangojs");

  

var db = new Database({

    url: "http://localhost:8529"

});


const database_name = "cool_database";  

db.useBasicAuth("username", "password123");

db.listDatabases()

  .then(names => {

    if (names.indexOf(database_name) > -1) {

      db.useDatabase(database_name);

      db.get();

    } else {

      db.createDatabase(database_name)

        .then(() => {

          db.useDatabase(database_name);

          db.collection("my-collection").create();

        });

    }

  });


exports.collection = db.collection("my-collection");

exports.db = db;

索引.js:


const {

  db,

  collection

} = require("./db");


const getJobFromQueue = () => {

  return db.query({

      query: "FOR el IN @@collection FILTER DATE_TIMESTAMP(el.email.sendAfter) < DATE_NOW() AND el.status != 'processed' AND el.status != 'failed' SORT el.email.sendAfter LIMIT 1 RETURN el",

      bindVars: {

        "@collection": "my-collection"

      }

    })

    .then(cursor => cursor.all());

}

警告:


请记住,您的代码中存在潜在的竞争条件。在它们被初始化之前,您可能最终会使用dband 。collection


查看完整回答
反对 回复 2023-02-24
  • 1 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信