iron-ajax绑定并将JSON写入文件

时间:2018-12-04 17:06:12

标签: javascript node.js json ajax iron-ajax

我的html中包含以下铁质ajax元素:

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

我在上面的html的js文件中有这个文件:

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版推文的属性。现在,如果我检查ajax请求,它的主体中将包含推文:

enter image description here

但是,我仍然无法在服务器端和控制台上得到任何东西。记录request.body返回{} ...知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

  1. 您能否确认json已通过chrome dev工具发送到服务器?
  2. 在尝试fetch时,请不要使用Iron-ajax的越野车,这是您的浏览器天生支持的
  3. 如果您实际上将json发送到后端,则它应该位于request.body.statuses