2016-10-05 19 views
0

Я пытаюсь использовать рентгеновский снимок на Метеор, но пока не повезло.Как использовать рентгеновское излучение в приложении метеорита?

Вот пример я тестирую (он прекрасно работает на базовом приложении узла)

import Xray from 'x-ray'; 

var xray = new Xray(); 

xray('http://reddit.com/r/meteor/', '.title', 
[{ 
    title: '', 
    href: '@href' 
}] 
) 
    .write('./result.json'); 
+0

какой пакет вы используете? Это пакет npm для рентгеновского снимка или обертка для метеор? – Ankit

+0

испробовал npm и https://atmospherejs.com/lai/meteor-xray –

ответ

2

Я надеюсь, что вы поняли его, так как это 5 месяцев назад я имел мою голову вокруг этого вопроса и понял так.

Не используйте пакет атмосферы, так как он больше не поддерживается.

$meteor npm install --save x-ray (https://github.com/lapwinglabs/x-ray)

Тогда просто создать Meteor.method на стороне сервера и вызвать его на стороне клиента.

(https://docs.meteor.com/api/methods.html)

// Server Side 

import Xray from 'x-ray' 

Meteor.methods({ 
    scrap:function(){ 
    var x = Xray(); 
    console.log('Is scrapping'); 
    x('http://google.com', 'title')(function(err, title) { 
     console.log(title) // Google 
    }) 
    } 
}); 

Затем

// Client Side 

Meteor.apply('scrap', function(error, result) { 
    console.log(error, result); 
    console.log('Scrap is bussy'); 
}) 

Приветствия

0

код из предыдущего поста в самом деле вызывает функцию рентгеновскую на стороне сервера, но не возвращает результат для клиента.

Использование асинхр/ожидание и обещания (ES7) вы можете вернуть результат от сервера к клиенту:

method.js (сервер):

import { Meteor } from 'meteor/meteor'; 
import Xray from 'x-ray'; 

Meteor.methods({ 
    async 'scrape.test'() { 
    let x = Xray(), 
     scraper; 
    function scrap() { 
     return new Promise((r, e) => { 
     x('http://google.com', 'title')(function(err, title) { 
      if (err) e(err); 
      if (title) r(title); 
     }); 
     }); 
    } 
    try { 
     return await scrap(); 
    } catch (error) { 
     throw new Meteor.Error('500', error); 
    } 
    } 
}); 

client.js:

Meteor.call('scrape.test', (error, result) => { 
    if (error) console.log('error', error); 
    console.log('result', result); 
}); 

Cheers