TwitchAPI를 호출하고 반환 된 데이터 일부를 MongoDB에 삽입하려고합니다. 그러나이 오류가 발생할 때마다 : Error: Meteor requires document _id fields to be non-empty strings or ObjectIDs
.Meteor MongoDB - API 호출에서 _id로 _id를 삽입 할 수 없습니다.
트 API 응답은 다음과 같습니다 :
이{
"streams": [
{
"_id": 11220687552,
"game": "League of Legends",
"viewers": 11661,
"created_at": "2014-09-30T01:10:36Z",
"_links": {
"self": "http://api.twitch.tv/kraken/streams/mushisgosu"
},
"preview": {
"small": "http://static-cdn.jtvnw.net/previews-ttv/live_user_mushisgosu-80x50.jpg",
"medium": "http://static-cdn.jtvnw.net/previews-ttv/live_user_mushisgosu-320x200.jpg",
"large": "http://static-cdn.jtvnw.net/previews-ttv/live_user_mushisgosu-640x400.jpg",
"template": "http://static-cdn.jtvnw.net/previews-ttv/live_user_mushisgosu-{width}x{height}.jpg"
},
"channel": {
"_links": {
"self": "https://api.twitch.tv/kraken/channels/mushisgosu",
"follows": "https://api.twitch.tv/kraken/channels/mushisgosu/follows",
"commercial": "https://api.twitch.tv/kraken/channels/mushisgosu/commercial",
"stream_key": "https://api.twitch.tv/kraken/channels/mushisgosu/stream_key",
"chat": "https://api.twitch.tv/kraken/chat/mushisgosu",
"features": "https://api.twitch.tv/kraken/channels/mushisgosu/features",
"subscriptions": "https://api.twitch.tv/kraken/channels/mushisgosu/subscriptions",
"editors": "https://api.twitch.tv/kraken/channels/mushisgosu/editors",
"videos": "https://api.twitch.tv/kraken/channels/mushisgosu/videos",
"teams": "https://api.twitch.tv/kraken/channels/mushisgosu/teams"
},
"background": null,
"banner": "http://static-cdn.jtvnw.net/jtv_user_pictures/mushisgosu-channel_header_image-c5c08cce281b7be3-640x125.jpeg",
"display_name": "MushIsGosu",
"game": "League of Legends",
"logo": "http://static-cdn.jtvnw.net/jtv_user_pictures/mushisgosu-profile_image-b1c8bb5fd700025e-300x300.png",
"mature": false,
"status": "CLG hi im Gosu - Challenger AD - Smurfing Master!",
"partner": true,
"url": "http://www.twitch.tv/mushisgosu",
"video_banner": "http://static-cdn.jtvnw.net/jtv_user_pictures/mushisgosu-channel_offline_image-7e3401b20cb5d739-640x360.png",
"_id": 41939266,
"name": "mushisgosu",
"created_at": "2013-03-31T21:12:14Z",
"updated_at": "2014-09-30T03:08:55Z",
"abuse_reported": null,
"delay": 60,
"followers": 318914,
"profile_banner": null,
"profile_banner_background_color": null,
"views": 25963780,
"language": "en-us"
}
}
],
"_total": 8477,
"_links": {
"self": "https://api.twitch.tv/kraken/streams?limit=1&offset=0",
"next": "https://api.twitch.tv/kraken/streams?limit=1&offset=1",
"featured": "https://api.twitch.tv/kraken/streams/featured",
"summary": "https://api.twitch.tv/kraken/streams/summary",
"followed": "https://api.twitch.tv/kraken/streams/followed"
}
}
Meteor.call('getStreams', function(err, res) {
var data = res.data.streams;
console.log(data);
data.forEach(function(item) {
console.log(item._id);
Streams.insert({
_id: item._id,
title: item.channel.status,
author: item.channel.display_name,
url: item.url
});
});
});
getStreams 간단한 데이터를 삽입하려고 내 서버 방식의 일부가 URL을 정의 호출하고 일부 변수를 설정합니다. 당신이 볼 수 있듯이 나는 _id
을 로깅하는 콘솔이므로 유효한 문자열을 반환한다는 것을 알았지 만 여전히 오류가 발생하고 있습니다. 현재 전화를 걸면 한 번에 100 개의 스트림을 반환하고 위에있는 4 개의 필드를 저장하기 위해 반복합니다. 이상적으로, 나는 각 스트림 객체를 DB에 자신의 엔트리로 저장하고 싶지만, 그렇게하려는 나의 모든 시도는 똑같은 오류를 낳았고, 또한 "miniMongo"의 버전이 Meteor에 번들되어 있으면 대량의 객체 배열 ... 나는 또한 그 smallMong이 Collection.save()
을 지원하지 않는다는 것을 읽었습니다. 슬프게도 최신 API 호출 정보로 각 _id
의 내용을 업데이트하는 데 더 늦을 것 같아요. 왜냐하면 그냥 사용하지 않기 때문에 .save
을 업데이트하고 삽입해야합니다. 같은 진술에서. 그것이 어떤 영향을하지만 컬렉션을 만들 때 false
에 autoIndexId
을 설정하려고 않은 경우
나는 확실하지 오전 중요하지 않는 것 :
Streams = new Meteor.Collection('streams', {autoIndexId: false});
어떤 통찰력에 감사드립니다.
결국 웹 사이트가 공개 되었습니까? : D 모르겠다. 그렇지만 체크 아웃하고 싶다. –