gpt4 book ai didi

javascript - 为什么我在 Meteor 中重新加载页面后收到未定义的值?

转载 作者:行者123 更新时间:2023-11-28 01:22:51 26 4
gpt4 key购买 nike

所以我有以下形式:

template(name='editUser')
.row
.col-md-4.col-md-offset-4
.page-header
h1 Edit user
form#edit-user-form
.form-group
label(for='name') Name
input#user-name.form-control(type='text' placeholder='Name' value='{{user.name}}')
.form-group
label(for='email') E-Mail
input#user-email.form-control(type='text' placeholder='E-Mail' value='{{getEmail user}}')
button.btn.btn-primary(type='submit') Update

以下handlebars.js-Helper:

Handlebars.registerHelper('getEmail', function (user) {
if (user.emails && user.emails[0] && user.emails[0].address)
return user.emails[0].address;
return '';
});

以及以下iron-Router代码:

    EditUserController = RouteController.extend({
template: 'editUser',
waitOn: function () {
return Meteor.subscribe('user', this.params._id);
},
data: function () {
return {
user: Meteor.users.findOne( { _id: this.params._id } )
};
}
});

如果我运行我的应用程序并单击编辑用户表单的链接,我可以看到电子邮件地址。但是,如果我更改代码并且 Meteor 自动刷新页面,则电子邮件字段为空,并且控制台显示它无法获取未定义的值。

如果我使用相同的表单,但使用 with-Helper,即使 Meteor 自动刷新页面,也会显示电子邮件:

template(name='editUser')
.row
.col-md-4.col-md-offset-4
.page-header
h1 Edit user
form#edit-user-form
with user
.form-group
label(for='name') Name
input#user-name.form-control(type='text' placeholder='Name' value='{{name}}')
.form-group
label(for='email') E-Mail
input#user-email.form-control(type='text' placeholder='E-Mail' value='{{getEmail this}}')
button.btn.btn-primary(type='submit') Update

为什么会这样呢?如果我得到单个结果(仅显示一个结果),我是否应该始终使用 with-Helper?

提前致谢!

最佳答案

Meteor.users.findOne 替换为 Meteor.users.find

findOne没有找到任何东西时,它会返回undefined,这会导致你的错误;当 find 没有找到任何东西时,它会返回一个空光标,Meteor 知道如何处理该光标。本质上,您通过添加 with 所做的一切都是为了让 Meteor 检查该值是否未定义,但对于游标(无论是空游标还是其他游标)来说,该检查不是必需的。

关于javascript - 为什么我在 Meteor 中重新加载页面后收到未定义的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23065193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com