2017-10-14 134 views
0

下一行正常工作,我可以看到在控制檯日誌整個對象:我無法訪問對象的屬性

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

回答

2

流星訂閱是異步。這意味着數據並不總是立即可用。

Tracker.autorun(() => { 
    const sub = Meteor.subscribe('projects'); 
    if (sub.ready()){ 
    const oneProject = Projects.findOne(key1); 
    console.log(oneProject.name); 
    } 
}); 

在訂閱準備就緒之前,不會嘗試查找項目。

+0

好吧,現在我可以在控制檯中輸入「名稱」,但它仍然不讓我將Project文檔傳遞給組件屬性。錯誤:「不能轉換未定義或空對象在鍵()」 – Reactib

+0

也許我應該打開另一個問題... – Reactib

+0

我創建了另一個問題: https://stackoverflow.com/questions/46746047/how-到通-AN-流星文檔對象從容器到反應組分 – Reactib