javascript - Ember : No model was found for 'user' and Duplicate POSTs created when executing the save promise

标签 javascript ember.js console ember-data ember-cli

更新:

有人可以帮忙吗?在本周的大半个月里,我一直在追求这个,但运气不佳。我确实注意到客户端正在生成两个 POST。我已经为适配器添加了代码。还有其他我应该寻找的地方吗?

我正在观看下面提供的视频教程,但在单击提交按钮将数据保存到数据库时无法解决两个错误。

  1. 没有找到“用户”的模型
  2. 正在生成两个 POST。这会导致 Assertion Failed 错误,我怀疑这是因为从服务器返回的 ID 与前端的当前 ID 不匹配。

我看到数据库有两条新记录。当我再次单击提交按钮时,应用程序会将我带回显示两条记录的待办事项页面。谁能告诉我做错了什么?

当前版本:

  • Ember :3.2.2
  • Ember 数据:3.2.0
  • jQuery : 3.3.1
  • Ember 简单验证:1.7.0

视频教程(错误出现在11:30分):https://www.youtube.com/watch?v=bZ1D_aYGJnU .注意:视频的作者似乎已经在视频结尾处解决了重复的 POST 问题,但我不知道如何解决。

Ember Error Message

组件/forms/todo-item-form/component.js

import Component from '@ember/component';

export default Component.extend({
    actions:{
        save(){
            this.get('submit')();
        }
    }
});

组件/forms/todo-item-form/template.hbs

<form {{action "save" on="submit"}}>
{{input placeholder="description" value=todoItem.description}}
  <br />
  {{#if todoItem.validations.isValid}}
    <button type="submit">Add</button>
  {{else}}
    <button type="submit" disabled>Add</button>
  {{/if}}
</form>

templates/s/todo-items/add.hbs

{{forms/todo-item-form
  todoItem=model
  submit=(route-action "submitAction") 
}}
{{outlet}}

models/todo-item.js

import DS from 'ember-data';

import { validator, buildValidations } from 'ember-cp-validations';

const { attr, belongsTo } = DS;
const Validations = buildValidations({
  description: [
    validator('presence', true),
    validator('length', {
      min: 4
    })
  ]
});

export default DS.Model.extend(Validations, {
    description: attr('string'),
    owner: belongsTo('person')
});

适配器/Application.js

import DS from 'ember-data';
import ENV from 'todo-list-client/config/environment';

const {computed, inject :{service} } = Ember;

export default DS.JSONAPIAdapter.extend({
    session: service(),

    namespace: ENV.APP.namespace,
    host: ENV.APP.host,

    headers: computed('session.data.authenticated.token', function() {
        let token = this.get('session.data.authenticated.access_token');
        return { Authorization: `Bearer ${token}` };
      }),
})

routes/s/todo-items/add.js

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

export default Route.extend({
    model(){
        return this.store.createRecord('todo-item');
    },

    actions: {
        submitAction() {
            this.get('controller.model')
            .save()
            .then(() => {
              this.transitionTo('s.todo-items');
            });
        }
    },
});

最佳答案

作者添加Ember-Data-Route add.js 路由作为 mixin 大约需要 15 分钟 5 秒。这会在模型之后进行清理。

他从那时开始解释,并在接下来的一两分钟内将其添加到视频中:

https://youtu.be/bZ1D_aYGJnU?t=15m5s

import Ember from 'ember';
import DataRoute from 'ember-data-route';

export default Ember.Route.extend(DataRoute, {
  model() {
    return this.store.createRecord('todo-item');
  },

  actions: {
    save() {
      this.get('controller.model')
        .save()
        .then(() => {
          this.transitionTo('s.todo-items');
        });
    }
  },

});

关于javascript - Ember : No model was found for 'user' and Duplicate POSTs created when executing the save promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51587728/

相关文章:

javascript - 如何以编程方式将 Ace(vim 键盘布局)置于插入模式

javascript - 为特定部分重建 css 并在需要时应用 jquery

ember.js - 对 EmberJS 对象的反射?如何在事先不知道 key 的情况下查找属性 key 列表

javascript - 如何从输入参数生成 HTTP header 摘要身份验证值?

java - 如何清除 Java 控制台?

javascript - 如何在 JavaScript 中通过滑动来跟踪链接?

ember.js - Windows 上的 ember-cli 构建速度太慢

c++ - Visual Studios - C++ 控制台立即打开和关闭

perl - 当 stdin/stderr/stdout 在 Activestate Perl 中重定向时写入控制台

javascript - Momentis (PLM) 的 Photoshop 脚本