Я пытаюсь получить предварительный просмотр URL-адреса для моего приложения Meteor + React, где, когда пользователи вставляют URL-адрес в текстовое поле, они получают предварительный просмотр URL-адреса. Я планирую добиться этого, используя несколько модулей npm, например:
- url-regex и
- open-graph-scraper
Я понимаю, что во избежание проблем с CORS запрос должен выполняться на стороне сервера. Итак, в настоящее время у меня настроено следующее:
// на клиенте
import urlRegex from 'url-regex';
const onTextareaChange = e => {
let value = e.target.value;
let testURL = urlRegex().test(value) //returns true if url exists in textarea
console.log(testURL);
if(testURL){
let extractURL = value.match(urlRegex()) //extract the url
extractURL.map(url =>{
console.log(url)
Meteor.call('scrapeURL',{url}, function (result){
console.log(result)
})
})
}
/* console.log(e.target.value) */
setTextarea(e.target.value)
}
// на сервере
import ogs from 'open-graph-scraper';
/* 24. scrapeURL */
'scrapeURL' ({url}){
new SimpleSchema({
url : { type : String }
}).validate({url})
if(!Meteor.userId){
throw new Meteor.Error('not-authorised!')
} else {
let options = { 'url': url };
ogs(options)
.then(function (result) {
console.log('result:', result);
return result;
})
.catch(function (error) {
console.log('error:', error);
});
}
}
Проблема здесь в том, что когда я пытался console.log
the results
на сервере, очищенные данные отображаются в консоли сервера. но когда я попытался вернуть results
с сервера клиенту, console.log
на клиенте показывает undefined
.
Я понятия не имею, что не так с кодом.