收集记录是流星的空回归。为什么?

时间:2016-04-22 07:41:32

标签: mongodb meteor reactjs

我正在尝试使用谷歌和默认帐户登录的流星游戏操作示例。用户登录显示为自己的记录。

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);

 },

1 个答案:

答案 0 :(得分:1)

.fetch()方法不是被动的,因此传递给容器的是光标的当前状态。最可能的问题是初始化发生在从服务器获取数据之前,因此集合仍然是空的。

只需删除.fetch()方法并将数据作为反应式游标传递:contacts: Contact.find({}),。当然,在容器中使用游标方法而不是数组方法。然后,一旦出现新数据,容器将自动刷新。