每当用户登录到他的帐户时我都会收到异常,并且在页面刷新之前我无法看到收集数据... ** [但是如果我使用它就没有任何异常
Books.find({“customer_name”:this.userId);
而不是
Books.find({“customer_name”:Meteor.user().emails[0].address);
我不需要这一步,因为在我的应用中,用户收集查找应该基于他们的电子邮件ID,而不是基于userId ...] ** 我的代码如下所示: 有人,请帮帮我:frowning_face:
server - main.js:
var My_collection;
Meteor.publish(‘books’, function() {
My_collection =
Books.find({“customer_name”:Meteor.user().emails[0].address);
return My_collection;
client -main.js:
Template.viewBooks.helpers({
books() {
return Books.find({}, { sort: { books_order: -1 } }).fetch();
},
});
client - main.html
{{#each books}}
{{books_id}}
{{/each}}
ERROR:
应用程序运行于:http://localhost:3000/ I20171205-16:06:49.773(5.5)? 来自子事务的异常id wQ9DpjjABEiPzMZ9P TypeError:不能 读取属性'电子邮件'的null I20171205-16:06:49.872(5.5)?在 Subscription._handler(server / main.js:16:75) I20171205-16:06:49.873(5.5)?在maybeAuditArgumentChecks (包/ DDP-服务器/ livedata_server.js:1768:12) I20171205-16:06:49.873(5.5)?在 DDP.CurrentPublicationInvocation.withValue (包/ DDP-服务器/ livedata_server.js:1043:15) I20171205-16:06:49.873(5.5)?在 Meteor.EnvironmentVariable.EVp.withValue(packages / meteor.js:1134:15) I20171205-16:06:49.873(5.5)?在Subscription.runHandler (包/ DDP-服务器/ livedata_server.js:1041:51) I20171205-16:06:49.873(5.5)?在 包/ DDP-服务器/ livedata_server.js:826:41 I20171205-16:06:49.874(5.5)?在Function..each..forEach (packages / underscore.js:147:22)I20171205-16:06:49.874(5.5)?在 包/ DDP-服务器/ livedata_server.js:822:9 I20171205-16:06:49.874(5.5)?在 Meteor.EnvironmentVariable.EVp.withValue(packages / meteor.js:1134:15) I20171205-16:06:49.874(5.5)?在Session._setUserId (包/ DDP-服务器/ livedata_server.js:816:34)
答案 0 :(得分:0)
在服务器上使用Meteor.user()通常是不好的做法。如果您没有足够的信息来发布和订阅您的馆藏,并且因为您说使用this.userId时没有收到任何错误,您可以通过以下方式找到电子邮件地址:
var currentUser = Meteor.users.findOne(this.userId);
var userEmail = currentUser.emails[0].address;
然后在Books.find
中使用它如果您可以提供有关订阅和发布的更多信息,我将能够提供更多帮助