我看到,在发布时,collection._connection.publish_handlers填充了collection._connection.method_handlers,其他区域也是如此.
我想基本上通过删除对该集合的引用来清理内存,并完全放弃它.
基本上,应用程序的每个用户都有该用户的集合列表.有一个发布函数,用户可以获取它们的集合列表:
Meteor.publish('users_collections', function() {
var self = this;
var handle = UsersCollections.find({ownerId: self.userId}).observeChanges({
added: function(id, collectionInfo) {
UsersCollectionManager.addUsersCollection(self.userId, collectionInfo.name);
}
});
});
Run Code Online (Sandbox Code Playgroud)
发布该用户的集合列表(以及任何连接的用户获取其列表).
一旦用户获得他们的列表,每个集合都会被新的Meteor.Collection反应,然后发布.
UsersCollectionManager.addUsersCollection = function(userId, collectionName) {
if (self.collections[userId].collections[collectionName] === undefined) {
self.collections[userId].collections[collectionName] = new Meteor.Collection(collectionName);
Meteor.publish(collectionName, function() {
return self.collections[userId].collections[collectionName].find();
});
}
};
Run Code Online (Sandbox Code Playgroud)
一旦用户断开连接,我就有了一个运行的功能.
如果该用户没有打开任何连接(例如:如果他们打开了多个窗口并关闭了所有连接"所有窗口关闭"),那么它将启动30秒超时:
由于应用程序的其他用户不需要此用户的集合.
我不确定如何从记忆中清理那些.
我没有在Meteor API中看到"取消发布"或"Collection.stop"类型的方法.
我该如何进行清理?
流星0.6.5.1从0.6.4(我的自定义私有包被忽略,无法正确加载)
我似乎无法获得我曾经在我的包/文件夹中添加并在smart.json中添加的包:
{
packages: {
"my_package": {
"path": "packages/my_package"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用绝对路径以及将my_package一起移动到meteor目录之外
自0.6.5升级后现在说:
smart.json changed.. installing from smart.json
Package my_package has been ignored because it has been manually installed in /packages
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
$ mrt add my_package
my_package: no such package
Run Code Online (Sandbox Code Playgroud)
导致:"没有这样的包"错误,即使它在packages /文件夹中
我错过了什么!:)?