第二次“new CouchDB.Database(queueDb);”时引发错误
我正在使用meteor-couchdb,并尝试连接到数据库进行API调用,并执行所需的操作。
dbName = new CouchDB.Database('db_name');
但是,当再次进行API调用时会抛出错误
Error: A method named '/db_name/insert' is already defined
根据API调用,我应该能够select需要连接的Db。 我尝试在节点的方式,即
Cloudant.use('db_name');
但是,然后meteor是我的服务器端框架,我需要asynchronous处理同步使用async await或Meteor.wrapAsync()。
什么是build议的方法来连接到数据库并执行操作,每当一个API调用?
如果我正确理解meteorCouchDB实现它连接到一个数据库服务器,并允许您使用多个数据库,所以无论多less次您调用new CouchDB.Database('db_name');
你应该做的是以下几点:
// tasks.js // create an instance of Tasks database only once var Tasks = new CouchDB.Database('tasks'); // you may want to export it so you can use it elsewhere exports.Tasks = Tasks; // blabla.js // in another file require the file var Tasks = require('path/to/tasks.js').Tasks; // and use it when needed Tasks.find();
附加代码来回答下面的评论
你可以有一个文件叫做dbs.js
,它可以为你dynamic创builddbs
var dbs = {}; exports.getDb = function(name){ if (!dbs[name]) dbs[name] = new CouchDB.Database(name); return dbs[name]; };
然后在任何你想要的地方使用
var Tasks = require('dbs.js').getDb('Tasks'); Tasks.find();