Iron-AJAX привязать и записать JSON в файл - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть следующий элемент iron-ajax в моем html:

<iron-ajax
  id="write-tweets"
  body='[{"statuses": "{{tweets}}"}]'
  url="/fscall"
  handle-as="json">
</iron-ajax>

И у меня есть это в файле js для вышеупомянутого html:

Polymer({
is: "sample-app",

properties: {
  tweets: {
    type: Object,
    value: [],
  },
},

handleResponse(e){
  console.log("_________Twitter responses aquired:_________");
  this.tweets = this.tweets.concat(e.detail.response.statuses);
  this.writeTweets();
},

На данный момент,tweets - это массив объектов JSON:

enter image description here

Теперь я пытаюсь отправить это обратно на сервер node.js, чтобы я мог написать/ сохранить его в файл.

writeTweets(){
  let ajax = this.root.querySelector('#write-tweets');
  ajax.generateRequest();  
}
... //some unrelated code

У меня в app.js есть следующее:

app.get('/fscall', (req, res) => {  
  fs.writeFile("tweets.json", JSON.parse(req.body, null, 4), function(err) {
    if (err) {
      console.log(err);
    }
  });
});

И здесь я сталкиваюсь с ошибками, я не знаю, как получить доступJSON, который я послал, req.body кажется пустым.То же самое происходит, если я пытаюсь обернуть tweets в получателе (например, сделать {returnTweets(){ return this.tweets;}, и body='[{"statuses": "{{returnTweets()}}"}]'.

Кто-нибудь может посоветовать, как я могу передать JSON и распечатать его?

ОБНОВЛЕНИЕ

ОК, поэтому мне удается связать твиты с body запроса, выполнив

<iron-ajax
  method="POST"
  id="write-tweets"
  body$='{"statuses": {{tweetsParsed}}}'
  url="/fscall"
  handle-as="json">
</iron-ajax>

Где tweetsParsed - это свойство, котороесодержит JSON.stringify ed твиты. Теперь, если я проверяю ajax-запрос, он содержит твиты в теле:

enter image description here

ОДНАКО, явсе еще не получая ничего на стороне сервера и консоли. logging request.body возвращает {} ... Есть идеи, почему это происходит?

1 Ответ

0 голосов
/ 06 декабря 2018
  1. Можете ли вы подтвердить, что json был отправлен на сервер (с помощью инструментов chrome dev)?
  2. Не используйте iron-ajax с ошибками в качестве ада попробуйте fetch , который нативно поддерживается вашим браузером
  3. Если вы действительно отправляете свой json на сервер, он должен быть в request.body.statuses
...