Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Meteor中注销收藏?_Javascript_Mongodb_Collections_Meteor - Fatal编程技术网

Javascript 如何在Meteor中注销收藏?

Javascript 如何在Meteor中注销收藏?,javascript,mongodb,collections,meteor,Javascript,Mongodb,Collections,Meteor,我正在尝试实现简单的功能,允许Meteor应用程序检查某个MongoDB字符串是否可以成功用于连接。为此,我有一个事件触发器,一个服务器方法,它建立到MongoDB的连接并返回集合中的文档数。 我使用的(简化)方法接受mongo连接字符串和集合名称,并返回集合中的文档数 var mongoUrl=”mongodb://user:password@192.168.0.98:27017/mydb”; var collectionName=“测试”; 流星法({ testDbConnection:函数

我正在尝试实现简单的功能,允许Meteor应用程序检查某个MongoDB字符串是否可以成功用于连接。为此,我有一个事件触发器,一个服务器方法,它建立到MongoDB的连接并返回集合中的文档数。 我使用的(简化)方法接受mongo连接字符串和集合名称,并返回集合中的文档数

var mongoUrl=”mongodb://user:password@192.168.0.98:27017/mydb”;
var collectionName=“测试”;
流星法({
testDbConnection:函数(mongoUrl,collectionName){
var数据库=新的MongoInternals.RemoteCollectionDriver(mongoUrl);
TestCollection=newmongo.Collection(collectionName,{{u-driver:database});
var numberOfDocs=TestCollection.find().count();
//帮助:如何注销TestCollection?
返回文件编号;
}
});
该方法的第一次调用有效,但因为我没有注销
TestCollection
所有后续调用都失败,因为Meteor已经为
test
集合定义了
insert
方法

Exception while invoking method 'testDbConnection' Error: A method named '/test/insert' is already defined
       at packages/ddp/livedata_server.js:1444:1
       at Function._.each._.forEach (packages/underscore/underscore.js:113:1)
       at [object Object]._.extend.methods (packages/ddp/livedata_server.js:1442:1)
       at [object Object].Mongo.Collection._defineMutationMethods (packages/mongo/collection.js:886:1)
       at new Mongo.Collection (packages/mongo/collection.js:208:1)
       at [object Object].Meteor.methods.testDbConnection (app/app.js:55:24)
       at maybeAuditArgumentChecks (packages/ddp/livedata_server.js:1599:1)
       at packages/ddp/livedata_server.js:648:1
       at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1)
       at packages/ddp/livedata_server.js:647:1

我如何才能在Meteor中注销收藏以执行这些临时数据库连接?

虽然我还没有得到您直接问题的答案,但我有一个想法可能对您的搜索有所帮助

我会考虑使用“工作者”的方法,这是你的流星应用程序,执行一项任务并死亡。那你就不用担心清理了

  • 如果使用速度,你可以启动一个“自毁镜”。你可以启动它并杀死镜子

  • 如果不使用Velocity,您仍然可以使用上述方法,从主应用程序中分叉一个子进程启动
    .meteor/../build/main.js

通过向child_进程传递一个环境变量,可以告诉应用程序它处于工作模式


旁注:自从我们(velocity团队)为mirrors做了这项工作以来,我一直在考虑编写一个Meteor worker软件包来实现上述功能。

因为创建
集合
不仅仅是为mongo集合提供一个接口,对于那些简单的即席查询,只使用
mongoternals
或npm
mongodb
不是更好吗?事实上,使用
var numberOfDocs=database.open(collectionName).find().count()确实可以很好地工作