我遇到了流星的奇怪问题。我尝试使用React-Component中的数据进行HTTP调用。但我无法访问返回的数据。 在服务器上:
'get': function get() {
try {
const data = Meteor.http.get('url', {
params: {
"api_key": "key",
"attribute": "attribute"
}
}
return data.data;
} catch (exception) {
throw new Meteor.Error('500', exception);
}
},
客户端上的:我已经使用withTracker()
设置了一个容器,以便我可以在我的react组件中作为道具访问http响应。
export default withTracker(() => {
var data = [];
Meteor.call('get', function(error, success) {
if (error) {
console.log('error', error.reason);
}
if (success) {
data.push(success);
console.log('success', success);
}
});
return {
data,
};
})(Component);
我已尝试过所有可能的组合。使用arrays
和objects
,但都没有成功。使用console.log(data)
时,我会在客户端上获得一些数据。但是使用console.log(data[0])
返回undefined
。
我还尝试从服务器'get'
方法返回一个对象。使用js Object.assign
。但是,在调用console.log(data.name)
时,我会在客户端上获得undefined
。
也许我没有以正确的方式解决它,但我不明白为什么当我尝试访问对象的数据时,这总是会返回undefined
。
答案 0 :(得分:0)
解决方法是将Meteor.call
放入component method
,并在component method
中传递另一个callback
,因为Meteor.call
不支持promises
或async / await
。 reference