我正在尝试将API响应插入到我的mongo db中,但它不会保存单个字段。
在这里输入
PlayersList.insert(Meteor.http.get("API CALL HERE"));
以下是来电的回复:
{"hnub": {
"id": 21098134,
"name": "Hnub",
"profileIconId": 20,
"revisionDate": 1428613578000,
"summonerLevel": 30
}}
有一种简单的方法可以干净地保存所有字段吗?
答案 0 :(得分:1)
你应该在回调中插入不那样的内容。
检查语法HTTP.get(url, [callOptions], [asyncCallback])
请求完成时调用的回调。需要的 客户端。
来自docs。
所以试试。
Meteor.http.get(url,function(err,result){
if(!err){
PlayersList.insert({result})
}
})
请确保您拥有$ meteor add http
,如果这不适用于某些Access-Control-Allow-Origin
政策使用Meteor.method / Meteor.call
答案 1 :(得分:0)
HTTP调用的响应是具有内容(String),数据(如果可以将其解析为JSON的JavaScript Object),标头和statusCode的对象。我建议您运行这样的代码以查看实际响应:
console.log(Meteor.HTTP.get("API CALL HERE"));
如果事实证明响应包含数据字段下的已解析JSON,那么您可以完成所需的操作:
PlayersList.insert(Meteor.HTTP.get("API CALL HERE").data);
请注意,这种进行API调用的同步方式只能在服务器上运行。正如@Ethaan指出的那样,您需要使用回调来从客户端执行此操作,并且您必须克服跨域限制。