node.js + wordpress вернуть данные поста - PullRequest
0 голосов
/ 25 июня 2019

Я занимаюсь разработкой сервера node.js для получения внешних данных API, а затем использую свою клиентскую часть для получения данных с моего сервера узлов, вместо того чтобы делать вызовы к сайтам API.

Я использую экспресс, axios, https

Я создал конечные точки для моего node.js

один из рабочих примеров: const URL3 = https://strainapi.evanbusse.com/${STAIN_API}/strains/search/all;


var myDta = https.get(URL3, (resp) => {
    let i = 1;
    let data = '';

    resp.on('data', (chunk) => {
        data += chunk;
    });
    resp.on('end', () => {

        strains = JSON.parse(data)
        return strains
    });
}).on("error", (err) => {
    console.log("Error: " + err.message);
});

var strains = myDta


app.get("/orders", (req, res, next) => {
    res.json(myDta);
})

и конечная точка отлично работает в node.js.

Теперь, чтобы получить сообщение WordPress, которое я делаю:

const URL1='https://example.com/wp-json/wp/v2/posts'

var postData = axios.get(URL1)
    .then(response => response.data)
    .then((data) => {
        pushPost = [];
        k = data[0]
        pushPost.push(k)
        console.log('my data ', pushPost) //This gives me the post data
        return pushPost
    })

var postDataRes = postData

console.log('this pushpost ', postDataRes) 
//this gives me an empty array

app.get("/posts", (req, res, next) => {
    res.json(postDataRes)
})

но я получаю и очищаю объект, но в консоли я могу получить желаемую запись, используя:

console.log('my data ', pushPost)

не могу понять, почему я не могу отправить данные сообщения в конечную точку на моем сервере node.js.

1 Ответ

1 голос
/ 25 июня 2019

Вам нужно будет прочитать и попрактиковаться в обещаниях / асинхронном выполнении JavaScript.Функции, которые вы определяете и предоставляете для .then (), будут выполняться после console.log('this pushpost ', postDataRes) Доступ к любым данным, полученным из обещания, возможен только внутри его функции .then ().

Кроме того, вы, вероятно, захотите выполнить выборку данных внутри вашего маршрута, или это произойдет только один раз при загрузке сервера expressjs.

const URL1='https://example.com/wp-json/wp/v2/posts'

app.get("/posts", (req, res, next) => {
    axios.get(URL1)
        .then(response => response.data)
        .then((data) => {
            const pushPost = [];
            k = data[0]
            pushPost.push(k)
            console.log('my data ', pushPost) //This gives me the post data

            res.json(pushPost)
        })

})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...