我正在使用meteor-couchdb并在进行API调用时尝试连接到db并执行所需的操作。
dbName = new CouchDB.Database('db_name');
但是当再次进行API调用时,它会抛出错误
Error: A method named '/db_name/insert' is already defined
根据API调用,我应该能够选择需要连接的Db。 我尝试以节点方式进行,即
Cloudant.use('db_name');
但是当Meteor是我的服务器端框架时,我需要使用async await或Meteor.wrapAsync()同步处理异步函数。
无论何时进行API调用,建议的连接数据库并执行操作的方法是什么?
答案 0 :(得分:2)
如果我正确理解流星CouchDB实现它连接到一个数据库服务器并允许您使用多个数据库,因此无论您拨打多少次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
来为你动态创建dbs
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();