javascript - HasMany - BelongsTo 与 RESTAdapter Ember.js

标签 javascript node.js ember.js ember-data sails.js

尝试创建一个有很多属于 RESTAdapter 的东西。本质上,我有一张卡片(推特用户)有很多标签。我正在使用 ember-cli。

我的模型:

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

export default DS.Model.extend({
    handle: DS.attr('string'),
    bio: DS.attr('string'),
    avatar: DS.attr('string'),
    hashtags: DS.hasMany('hashtag')
});


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

export default DS.Model.extend({
    title: DS.attr('string'),
    print: DS.attr('boolean'),
    card: DS.belongsTo('card')
});

我的卡片路线

import Ember from 'ember';

export default Ember.Route.extend({
    model: function(){
        return this.store.createRecord('card');
    },

    actions: {
        submitHandle: function () {
            var card = (this.currentModel);
            var store = this.store;
            var hashtag = store.createRecord('hashtag');

            card.set("bio", "testbio");
            card.set("avatar", "twitter.com/129012931/img_original.jpg");

            hashtag.set("title", "EmberJS");
            hashtag.set("print", false);
            hashtag.set("card", card);

            card.get('hashtags').addObject(hashtag);

            card.save();
        }
    }
});

在我的 route ,当用户输入推特名称时,我正在制作一张虚拟卡片和标签。我将主题标签添加到卡片主题标签中。到目前为止,在 Ember 方面一切都很好。如果我不调用 card.save(),卡片和主题标签会按预期关联。当我调用 .save() 时,发布的请求是:

card: {handle: "@testing123", bio: "testbio", avatar: "twitter.com/129012931/img_original.jpg"}

没有提及主题标签。

我在后端使用 sails,它似乎可以保存请求中提供的任何内容。

如果我尝试这样的事情: hashtag.save().then(function () { 卡.保存() });

我之所以尝试,是因为我认为在 Ember 将其与卡片相关联之前,我可能需要来自服务器的 ID 用于标签。 hashtag请求如下:

{"hashtag":{"title":"EmberJS","print":false,"card":null}}

和卡片请求:

{"card":{"handle":"@wiolsid","bio":"testbio","avatar":"twitter.com/129012931/img_original.jpg"}}

最佳答案

一些新手注意事项。

  1. 尝试像这样创建一个主题标签:

    var hashtag = store.createRecord('hashtag', {card: card});
    

    那么你就不需要card.get('hashtags').addObject(hashtag);

  2. 在保存父模型之前先保存子模型。

这是我为尝试类似任务而创建的 fiddle :

关于javascript - HasMany - BelongsTo 与 RESTAdapter Ember.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28529338/

相关文章:

javascript - node.js 域是自动清理还是我必须调用 domain.dispose()

mysql - 使用子查询和 case When 语句对查询进行序列化

node.js - 从在代理后面运行的网站访问 Web 服务

javascript - 如何使用 Chrome Selenium C# 执行点击 DateRangePicker

javascript - 在 Require.js 中使用多个版本的 jQuery

javascript - 在多个表中同时获取结果

javascript - 使用 readline node.js 搜索文本文件

javascript - Ember JS 教程 : TypeError: Cannot read property 'maps' of undefined

ember.js - 事务提交后设置回调

javascript - 无法使用选择器从Redux存储中获取值