Вставка внешних, реактивных данных API в коллекцию метеоров
У меня есть некоторые внешние данные, которые я вызываю из API. Данные WordPress публикуют объекты, которые я извлекаю через API WordPress.
Я использую пакет HTTP, и мой код выглядит следующим образом.
server.js
const articleIncoming = HTTP.call( 'GET', 'http://myUrl/wp-json/wp/v2/posts', {}, function( error, articleIncoming ) {
if ( error ) {
console.log( error );
} else {
console.log( articleIncoming );
});
куда articleComing
это ответ. Один пост- объект WordPress выглядит так в консоли. Эти данные регулярно пополняются новыми сообщениями, и я хотел бы, чтобы коллекция Posts
, в который я загружаю эти данные, чтобы отразить это.
Теперь, когда у меня есть данные, я хочу добавить эти сообщения в коллекцию под названием Posts
но у меня трудности.
server.js
const articleIncoming = HTTP.call( 'GET', 'http://myUrl/wp-json/wp/v2/posts', {}, function( error, articleIncoming ) {
if ( error ) {
console.log( error );
} else {
console.log( articleIncoming );
});
Meteor.methods({
'Posts.insert'(articleIncoming) {
return Posts.insert({
articleIncoming,
});
},
});
Как я могу сохранить постоянно обновляемые записи WordPress в коллекцию таким образом, чтобы они обновлялись при публикации новой публикации в WordPress?
Без пост дублирования
1 ответ
Вы путаете определение методов Метеор с вызовом.
Получить и сохранить код статьи:
HTTP.get('http://myUrl/wp-json/wp/v2/posts', (error, articleIncoming) => {
if ( error ) {
console.log( error );
} else {
Meteor.call('Posts.insert', articleIncoming, (err, postId) => {
if (err) {
// handle error
}
});
}
});
Где-нибудь еще:
Meteor.methods({
'Posts.insert'(articleIncoming) {
// prevent duplications, based in article's `id` field
const _id = `article_${articleIncoming.id}`;
return Posts.upsert({ _id }, articleIncoming);
},
});