我有一个对象,我想将其中一个字段设置为使用对象中另一个字段的值查询数据库的返回。以下方法返回null
,因为我确定它不对,但我无法找到最佳方法。
shared_user_email
为空,则 shared_user
应为空,但如果填充了shared_user
,它应表示数据库查询的返回。
我知道javascript变量在运行时被提升到应用程序的顶部,但我似乎成了这里操作顺序的牺牲品。
var newList = {
title: $(ev.target).find('[name=title]').val(),
description: $(ev.target).find('[name=description]').val(),
dateCreated: today.toDateString(),
owner: Meteor.userId(),
owner_email: Meteor.user().emails[0].address,
shared_user: $(ev.target).find('[name=shared_user]').val(),
shared_user_email: shared_user_email_field
}
var shared_user_email_field = (newList.shared_user != '') ? Meteor.users.find({_id: $(ev.target).find('[name=shared_user]')
.val()}).fetch()[0].emails[0].address : '';
修改
这是在创建对象后立即调用的服务器端方法,该方法将newList
传递给服务器:
Meteor.call('addList', newList, function(err, list){
console.log(shared_user_email_field);
return list;
});
答案 0 :(得分:0)
var newList = {
title: $(ev.target).find('[name=title]').val(),
description: $(ev.target).find('[name=description]').val(),
dateCreated: today.toDateString(),
owner: Meteor.userId(),
owner_email: Meteor.user().emails[0].address,
shared_user: $(ev.target).find('[name=shared_user]').val(),
shared_user_email: ''
}
newList.shared_user_email = (newList.shared_user != '') ? Meteor.users.find({_id: $(ev.target).find('[name=shared_user]')
.val()}).fetch()[0].emails[0].address : '';