流星findOne没有返回值

时间:2016-07-08 16:45:22

标签: javascript mongodb meteor reactjs

我有一个订阅商品的组件。 确认项目在那里,就像我使用以下内容一样,它返回带有项目内部的光标:

console.log(Items.find({key: itemKey}).fetch());

物品集合已导入等。

我的构造函数:

constructor(){
            super();
            this.state = {
                    subscription: {
                            items: Meteor.subscribe("allItems")
                    }
            }
    }

我的组件将卸载方法:

    componentWillUnmount(){
            this.state.subscription.items.stop();
    }

这是问题所在的方法。错误是Uncaught TypeError:无法读取属性' srcEntire'未定义:

    getItemSource(itemKey){
           console.log(itemKey); // shows the correct key
           var itemer = Items.findOne({key: itemKey});
           console.log(itemer.srcEntire);
            return itemer.srcEntire;
    }

渲染部分(如果我对getItemSource方法的返回值进行硬编码,则显示图像。通过调用getItemSource方法并传入传入的图层道具(道具工作)找到图像的来源:< / p>

    render(){   


     return (                               
              <div className="col-lg-3" >

             <img id="myLayer" className="on-top img-responsive center-block on-top " name="myLayer" src={this.getItemSource(this.props.layers.myLayer)} />

</div>

)}

1 个答案:

答案 0 :(得分:0)

当您执行findOne() itemer时,您的订阅尚未准备就绪,直到它(可能是毫秒)为止。您可以等待订阅准备就绪,也可以使用以下方式为自己辩护:

getItemSource(itemKey){
  var itemer = Items.findOne({key: itemKey});
  return itemer && itemer.srcEntire;
}