流星:发布/订阅问题
Meteor: Publish / Subscribe issue
我只是删除了 autopublish 和不安全的包,所以根据我的理解,我必须定义我的 mongodb,在服务器端发布它们,并在客户端仅订阅我想访问客户端的那些数据库。所以我做了
服务器
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.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.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) at C:\Users\Farhan\csgofiyav1.meteor\local\build\programs\server\boot.js:133:5
然而,在那之后,我删除了 users = new Mongo... & roles 并且它起作用了。没有错误返回。我很困惑,现在想知道应用程序的安全性是否受到威胁...
任何防止这种情况发生的澄清和建议都将是救命稻草!
Users 已经是内置集合。不需要发布或订阅用户,因为它已经由框架完成。
有时,需要自定义用户集合的默认发布行为。 Meteor guide 对此进行了详细解释。
我只是删除了 autopublish 和不安全的包,所以根据我的理解,我必须定义我的 mongodb,在服务器端发布它们,并在客户端仅订阅我想访问客户端的那些数据库。所以我做了
服务器
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.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.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) at C:\Users\Farhan\csgofiyav1.meteor\local\build\programs\server\boot.js:133:5
然而,在那之后,我删除了 users = new Mongo... & roles 并且它起作用了。没有错误返回。我很困惑,现在想知道应用程序的安全性是否受到威胁...
任何防止这种情况发生的澄清和建议都将是救命稻草!
Users 已经是内置集合。不需要发布或订阅用户,因为它已经由框架完成。
有时,需要自定义用户集合的默认发布行为。 Meteor guide 对此进行了详细解释。