我正在尝试使用谷歌和默认帐户登录的流星游戏操作示例。用户登录显示为自己的记录。
createContainer
函数将联系人返回为[ ]
,为什么?
首先,我尝试使用Google帐户登录并且工作正常。之后我添加了流星帐户ui和帐户密码。然后它给我空接触。所以必须在这里找不到使用meteor account ui的东西。
这就是我所做的。
list.jsx
export default createContainer(() => {
return {
contacts: Contact.find({}).fetch(),
user: Meteor.user(),
};
}, ContactList);
我的架构: -
export const Contact = new Mongo.Collection('contact');
Meteor.methods({
'contacts.insert'(firstName,lastName,email,password){
if (!Meteor.userId()) {
throw new Meteor.Error('not-authorized');
}
ContactSchema = new SimpleSchema({
"firstName": {
type: String
},
"lastName": {
type: String
},
"email": {
type: String,
regEx: SimpleSchema.RegEx.Email,
label: "E-mail address"
},
"password": {
type: String,
min:6,
label:'password at least 6 character'
},
"owner": {type: String},
"createdAt": {type: Date}
});
Contact.insert({
firstName,
lastName,
email,
password,
createdAt: new Date(),
owner: Meteor.userId()
});
Contact.attachSchema(ContactSchema);
},
答案 0 :(得分:1)
.fetch()
方法不是被动的,因此传递给容器的是光标的当前状态。最可能的问题是初始化发生在从服务器获取数据之前,因此集合仍然是空的。
只需删除.fetch()
方法并将数据作为反应式游标传递:contacts: Contact.find({}),
。当然,在容器中使用游标方法而不是数组方法。然后,一旦出现新数据,容器将自动刷新。