gpt4 book ai didi

ember.js - Uncaught Error : No model was found for 'model'

转载 作者:行者123 更新时间:2023-12-01 23:43:10 25 4
gpt4 key购买 nike

我正在使用以下内容构建一个 Ember-CLI 应用程序:

DEBUG: Ember                          : 1.10.0
DEBUG: Ember Data : 1.0.0-beta.15
DEBUG: jQuery : 2.1.3

使用表单,我试图保存对 2 个不同模型的更改。其中一个模型(用户模型)保存成功,而另一个(配置文件模型)抛出此错误:

Uncaught Error: No model was found for 'userProfile'

模型

有问题的两个模型是:

models/user.js
models/user/profile.js

用户模型:

import DS from "ember-data";

export default DS.Model.extend({
email: DS.attr('string'),
username: DS.attr('string'),
firstname: DS.attr('string'),
lastname: DS.attr('string'),
comments: DS.hasMany('comments'),
});

个人资料模型:

import DS from "ember-data";

export default DS.Model.extend({
avatar: DS.attr('string'),
educationDegree: DS.attr('string'),
educationUniversity: DS.attr('string'),
workRole: DS.attr('string'),
workOrganisation: DS.attr('string'),
interests: DS.attr('string'),
});

Controller

import Ember from "ember";

export default Ember.Controller.extend({
saved:false,
actions: {
save:function(){
this.get('model.user').save();
this.get('model.profile').save();
this.set('saved',true);
},
},
});

路线

import Ember from 'ember';
import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin';

export default Ember.Route.extend(AuthenticatedRouteMixin, {
model: function(){
var _this = this;
var currentUser = this.get('session.user');

return new Ember.RSVP.all([
_this.store.find('user', currentUser.id),
_this.store.find('user.profile', {UserId: currentUser.id}),
]).then(function(values){
return {
user: values[0],
profile: values[1].get('firstObject'),
}
});
},
});

模板

<form {{action "save" on="submit"}}>
{{input type="text" placeholder="First Name" value=model.user.firstname}}
{{input type="text" placeholder="Last Name" value=model.user.lastname}}
{{input type="email" placeholder="Email" value=model.user.email}}
{{input type="text" placeholder="Affiliation" value=model.profile.workOrganisation}}
<button type="submit" class="btn teal white-text">Save</button>
{{#if saved}}
<p class="text-valid">Save Successful.</p>
{{/if}}
</form>

最佳答案

发生此错误是因为 Ember Data 找不到模型来插入从保存后的 PUT 返回的数据,我认为它看起来像

{ userProfile: { ... } }

我不知道 Ember 根据这些“根键”(例如 userProfile)查找模型的确切规则,但我怀疑它是否可以找到 profile 隐藏在 models/user/ 下的模型。

过去,如果您可以控制服务器,以下内容对我有用:

{ "user/profile": { ... } }

如果您无法更改服务器响应,或者由于其他原因无法正常工作,最简单的做法是将 profile 模型移至 的顶层>models 目录并将其命名为 user-profile.js

另一种选择是使用 modelNameFromPayloadKey:

// serializers/application.js
import DS from 'ember-data';

export default DS.RESTSerializer.extend({
modelNameFromPayloadKey: function(payloadKey) {
if (payloadKey === 'userProfile') payloadKey = 'user/profile';
return this._super(payloadKey);
}
});

关于ember.js - Uncaught Error : No model was found for 'model' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30396851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com