每当用户登录到他的帐户时,我都会得到一个异常,在刷新页面之前,我无法看到收集数据。…**但如果我像这样使用它,我不会得到任何例外。
Books.find({“customer_name”:this.userId);而不是
Books.find({“customer_name”:Meteor.user().emails[0].address);我不需要这个步骤,因为在我的应用程序中,用户的集合查找应该基于他们的电子邮件id,而不是用户id…]**我的代码如下所示:有人,请帮助我out:frowning_face:
服务器- main.js:
var My_collection;
Meteor.publish(‘books’, function() {
My_collection =
Books.find({“customer_name”:Meteor.user().emails[0].address);
return My_collection;客户端-main.js:
Template.viewBooks.helpers({
books() {
return Books.find({}, { sort: { books_order: -1 } }).fetch();
},
});client - main.html
{{#each books}}
{{books_id}}
{{/each}}错误:
应用程序运行于:http://localhost:3000/ I 20171205-16:06:49.773(5.5)?异常从子事务id wQ9DpjjABEiPzMZ9P TypeError:无法读取属性‘电子邮件’为空I20171205-16:06:49.872(5.5)?在Subscription._handler (server/main.js:16:75) I20171205-16:06:49.873(5.5)?在(packages/ddp-server/livedata_server.js:1768:12) I 20171205-16:06:49.873(5.5)?在(packages/ddp-server/livedata_server.js:1043:15) I 20171205-16:06:49.873(5.5)?在Meteor.EnvironmentVariable.EVp.withValue (包裹/陨石:1134:15)I 20171205-16:06:49.873(5.5)?在(packages/ddp-server/livedata_server.js:1041:51) I 20171205-16:06:49.873(5.5)?在包/ddp-server/livedata_server.js:826:41 I20171205-16:06:49.874(5.5)?在Function..each..forEach (软件包/底盘:147:22) I20171205-16:06:49.874(5.5)?在包/ddp-server/livedata_server.js:822:9 I20171205-16:06:49.874(5.5)?在Meteor.EnvironmentVariable.EVp.withValue (包裹/陨石:1134:15)I 20171205-16:06:49.874(5.5)?在(packages/ddp-server/livedata_server.js:816:34) Session._setUserId
发布于 2017-12-06 05:31:54
在服务器上使用Meteor.user()通常是不好的做法。如果没有关于如何发布和订阅集合的足够信息,而且由于您说在使用this.userId时没有收到任何错误,您可以通过以下方式找到电子邮件地址:
var currentUser = Meteor.users.findOne(this.userId);
var userEmail = currentUser.emails[0].address;然后在Books.find中使用它
如果您能够提供更多有关订阅和发布的信息,我将能够提供更多的帮助。
https://stackoverflow.com/questions/47665654
复制相似问题