Ember.js Ember Cli将记录保存到http模拟服务器

Ember.js Ember Cli将记录保存到http模拟服务器,ember.js,ember-data,ember-cli,Ember.js,Ember Data,Ember Cli,我正在使用Ember cli和它的http模拟功能制作一个小应用程序的原型。我可以读取记录,并从模拟中检索异步关联。那部分很好用。然而,当我试图创建、编辑或删除记录时,我遇到了麻烦。具体来说,record.save()承诺被拒绝。我还没有足够的经验来确切地知道为什么会发生这种情况。希望有人在那里有一些实践与此。非常感谢您的帮助。使用ember cli 0.2.0、ember 1.10.0和ember data 1.0.0-beta.15 // adapters/applications.js i

我正在使用Ember cli和它的http模拟功能制作一个小应用程序的原型。我可以读取记录,并从模拟中检索异步关联。那部分很好用。然而,当我试图创建、编辑或删除记录时,我遇到了麻烦。具体来说,
record.save()
承诺被拒绝。我还没有足够的经验来确切地知道为什么会发生这种情况。希望有人在那里有一些实践与此。非常感谢您的帮助。使用ember cli 0.2.0、ember 1.10.0和ember data 1.0.0-beta.15

// adapters/applications.js
import DS from 'ember-data';

export default DS.RESTAdapter.extend({
  namespace: 'api',
  coalesceFindRequests: true
});


// models/post.js
import DS from 'ember-data';

export default DS.Model.extend({
  name: DS.attr('string'),
  comments: DS.hasMany('comment', async: true)
});


// controllers/posts/new.js
import Ember from 'ember';

export default Ember.Controller.extend({
  actions: {
    save: function () {
      var _this = this;
      var name = this.get('model.name');
      var post = this.store.createRecord('post', {
        name: name
      });

      post.save().then(function () {
        _this.set('message', 'Record Saved');
      }, function () {
        _this.set('message', 'Promise Rejected')
      });
    }
  }    
});


// server/mocks/posts.js
module.exports = function(app) {
  var express = require('express');
  var postsRouter = express.Router();

  var posts = [{
    id: 1,
    name: 'Foo',
    comments: [11, 999]
  },
  {
    id: 2,
    name: 'Bar',
    comments: [21, 22]
  }];

  postsRouter.get('/', function(req, res) {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.send({
      'posts': posts
    });
  });

  postsRouter.post('/', function(req, res) {
    res.status(201).end();
  });

  postsRouter.get('/:id', function(req, res) {
    console.log(req.params);
    res.send({
      'posts': {
        id: req.params.id
       }
    });
  });

  postsRouter.put('/:id', function(req, res) {
    res.send({
      'posts': {
        id: req.params.id
      }
    });
  });

  postsRouter.delete('/:id', function(req, res) {
    res.status(204).end();
  });

  app.use('/api/posts', postsRouter);
};

看来你误解了恩伯文件。他们使用
record
作为您实例化的记录名称的替代。所以在你的情况下,而不是

record.save().then(function() {
您将需要:

post.save().then(function() {
因为
post
是您创建的
DS.Model
的实例