Meteor:发布/订阅问题

Posted

技术标签:

【中文标题】Meteor:发布/订阅问题【英文标题】:Meteor: Publish / Subscribe issue 【发布时间】:2016-11-29 13:14:34 【问题描述】:

我只是删除了自动发布和不安全的软件包,所以据我了解,我必须定义我的 mongodb,将它们发布到服务器端并在客户端上仅订阅我想要访问客户端的那些 db。所以我做到了

服务器

Users = new Mongo.Collection('users');

Meteor.publish('users', function()
return Users.find();
);

客户

Meteor.subscribe('users');

我还重新启动了我的数据库,因此我从 mongo cmd 行中删除了角色和用户数据库。 db.users.drop() 等

但是,我被退回了

W20160726-11:19:13.986(8)? (STDERR)
W20160726-11:19:13.990(8)? (STDERR) C:\Users\Farhan\AppData\Local\.meteor\packages\meteor-tool\1.3.5_1\mt-os.windows.x86_32\dev_bundle\server-lib\node_modules\fibers\future.js:280
W20160726-11:19:13.993(8)? (STDERR)                                             throw(ex);
W20160726-11:19:13.996(8)? (STDERR)                                                   ^
W20160726-11:19:13.998(8)? (STDERR) Error: There is already a collection named "users"
W20160726-11:19:14.001(8)? (STDERR)     at new Mongo.Collection (packages/mongo/collection.js:244:15)
W20160726-11:19:14.004(8)? (STDERR)     at meteorInstall.server.main.js (server/main.js:2:9)
W20160726-11:19:14.007(8)? (STDERR)     at fileEvaluate (packages/modules-runtime/.npm/package/node_modules/install/install.js:153:1)
W20160726-11:19:14.012(8)? (STDERR)     at require (packages/modules-runtime/.npm/package/node_modules/install/install.js:82:1)
W20160726-11:19:14.015(8)? (STDERR)     at C:\Users\Farhan\csgofiyav1\.meteor\local\build\programs\server\app\app.js:100:1
W20160726-11:19:14.019(8)? (STDERR)     at C:\Users\Farhan\csgofiyav1\.meteor\local\build\programs\server\boot.js:297:10
W20160726-11:19:14.022(8)? (STDERR)     at Array.forEach (native)
W20160726-11:19:14.025(8)? (STDERR)     at Function._.each._.forEach

(C:\Users\Farhan\AppData\Local.meteor\packages\meteor-tool\1.3.5_1\mt-os.windows.x86_32\dev_bundle\server-lib\node_modules\underscore\underscore.js:79 :11) W20160726-11:19:14.029(8)? (STDERR) 在 C:\Users\Farhan\csgofiyav1.meteor\local\build\programs\server\boot.js:133:5

但是,在那之后,我删除了 users = new Mongo... & roles 并且它起作用了。没有返回错误。我很困惑,现在想知道应用程序的安全性是否已受到损害...

任何可以防止这种情况发生的澄清和建议都可以挽救生命!

【问题讨论】:

【参考方案1】:

Users 已经是一个内置集合。无需发布或订阅用户,因为它已经由框架完成。

有时,需要自定义用户集合的默认发布行为。 Meteor guide 对此进行了详细说明。

【讨论】:

以上是关于Meteor:发布/订阅问题的主要内容,如果未能解决你的问题,请参考以下文章

Meteor、MongoDB通过订阅获取部分数组

Meteor 集合获取返回空数组但已订阅

Meteor 发布/订阅独特客户端集合的策略

客户端订阅未从 Meteor 服务器发布接收数据

Meteor/Mongodb - 数组、子文档和重叠订阅

UI helper 函数在 Meteor 中没有订阅数据