我无法访问对象的属性

时间:2017-10-14 01:58:33

标签: mongodb meteor meteor-react

下一行工作正常,我可以在控制台日志中看到整个对象:

Meteor.subscribe('projects')
var oneProject = Projects.findOne(key1);
console.log(oneProject)

在控制台中,我可以看到oneProject的属性,甚至是name属性。

现在使用以下行,结果是错误:

Meteor.subscribe('projects')
var oneProject = Projects.findOne(key1);
console.log(oneProject.name)

错误是:“无法读取未定义的属性'名称'”。

这是整个代码:

import { Meteor } from 'meteor/meteor';
import { withTracker } from 'meteor/react-meteor-data';
import { Projects } from '/imports/api/projects.js';
import ProjectFormUpdate from './ProjectFormUpdate.jsx';

export default ProjectFormUpdateContainer = withTracker(({ key1 }) => {
  Meteor.subscribe('projects')
  var oneProject = Projects.findOne(key1);
  console.log(oneProject.name)
  return {
    oneProject:oneProject,
  };
})(ProjectFormUpdate);

1 个答案:

答案 0 :(得分:2)

Meteor中的订阅是异步。这意味着数据并不总是立即可用。

Tracker.autorun(() => {
  const sub = Meteor.subscribe('projects');
  if (sub.ready()){
    const oneProject = Projects.findOne(key1);
    console.log(oneProject.name);
  }
});
在订阅准备好之前,

不会尝试查找项目。