最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

灰烬成分POST到快速API提供了错误

运维笔记admin19浏览0评论

灰烬成分POST到快速API提供了错误

灰烬成分POST到快速API提供了错误

当试图从做一个组件后,我烬应用到我的快递API我收到

SyntaxError: Unexpected token V in JSON at position 0

当检查我收到什么反应在网络上检查铬我见

ValidationError: body: Path `body` is required., title: Path `title` is required. undefined

该blogpost.title和。体都返回正确的值,但博客帖子给我

adapterError: SyntaxError: Unexpected token V in JSON at position 0 at parse

EmberApp /应用/组件/创建新员额/ Component.js

export default Component.extend({
  blogpost: null,
  router: inject('-routing'),
  actions: {

    save: function (blogpost) {
      console.log(blogpost.title);
      console.log(blogpost.title);
      console.log(blogpost);

      blogpost.save()
          .then(
            (value) => {
              Ember.Logger.info(value);
              this.get('router').transitionTo('index')
            }
          )
          .catch(
            (err) => {
              Ember.Logger.info('failure to save');
              console.log(err);
            }
          )

    }
  }
});

EmberApp /应用/组件/创建新员额/ template.hbs

<form  {{action "save" blogpost on="submit"}}>
  <p>
    {{input name="title" value=blogpost.title class="form-control" placeholder="Title"}}
  </p>
  <p>
    {{textarea name="body" value=blogpost.body class="form-control" placeholder="Body" rows="10" cols="140"}}
  </p>
  <p>
    <button class="btn btn-primary btn-block" type="submit" value="Save">Publish</button>
  </p>
</form>

EmberApp /应用/路由/ createpost.js

import Route from '@ember/routing/route';

export default Route.extend({
  model() {
    return this.store.createRecord('blogpost');
  }

});

EmberApp /应用/模板/ createpost.hbs

<div class="container">
  <div class="col-sm-12 pull-left">
    {{create-new-post blogpost=model }}
  </div>
</div>

我已经证实,帖子的API路由与邮差工作,所以我不知道问题是什么灰烬。

ExpressAPI路由器

router.post('/blogposts',  (req, res) => {
    console.log('In router');
    console.log(req.body);
    let newBlogPost = new BlogPostSchema(req.body);

    newBlogPost.save((err, blogpost) => {
        if(err){
            console.log(err +" "+blogpost);
            res.send(err +" "+blogpost);
        }
        console.log(blogpost);
        res.json(blogpost);
    });
});

req.body返回{}这就是为什么它击中ERR

回答如下:

想通了我的问题。对于任何试图用一个明确的API与Ember的前端时,谁也有类似的问题,我首先实现了从emberjs这一职务的请求发送与"application/vnd.api+json"内容类型的标题。

所以在我的快递server.js我加app.use(bodyParser.json({ type: 'application/vnd.api+json' }));它可以让身体解析器解析并返回正确的req.body。然后我创建了一个新的串行ember generate serializer blogpost针对序列化的要求,我的快递API期待的格式我的余烬应用程序。

EmberApp /串行器/ blogpost.js

import DS from 'ember-data';

export default DS.JSONAPISerializer.extend({
  serialize(snapshot, options){
    let json = this._super(...arguments);
    let newjson = {
      title: json.data.attributes.title,
      body:  json.data.attributes.body
    };

    return newjson;
  }
});
发布评论

评论列表(0)

  1. 暂无评论