【问题标题】:Sails.js - Is there intended support for a "one-way-many" associationSails.js - 是否有意支持“单向多”关联
【发布时间】:2015-05-12 18:24:17
【问题描述】:

我对@9​​87654321@ 关联感兴趣。解释:

// Dog.js
module.exports = {

    attributes: {
        name: {
            type: 'string'
        },
        favorateFoods: {
            collection: 'food',
            dominant: true
        }
    }
};

// Food.js
module.exports = {

    attributes: {
        name: {
            type: 'string'
        },
        cost: {
            type: 'integer'
        }
    }
};

换句话说,我希望Dogmany Food 条目相关联,但至于Food,我不在乎与哪个Dog 相关联。

如果我真的实现了上述方法,不管它是否有效。但是,associationtable 以非常混乱的方式命名 - 甚至比正常情况更令人困惑;)

dog_favoritefoods__food_favoritefoods_foodiddog_favoritefoodsfood_favoritefoods_food

REST blueprints 函数与 Dog 模型很好,除了时髦的表名外,我没有看到任何“看起来很糟糕”的东西。

所以,问题是,它是否应该以这种方式工作,是否有人看到可能出现问题的东西?

【问题讨论】:

    标签: associations sails.js waterline


    【解决方案1】:

    我觉得你应该没事。

    但是,似乎没有任何理由不完成多对多的关联。原因是因为已经为该单个集合创建了所有内容。连接表及其属性已经存在。这个等式中唯一缺少的是食物的参考。

    如果将关联放在食物上是要创建另一个表或创建另一个奇怪的连接,我可以理解,但这已经完成了。创建其他关联确实没有开销。

    所以理论上你最好创建它,从而避免任何潜在的冲突,除非你有一个真正令人信服的理由不这样做?

    已编辑:根据下面的 cmets,我们应该注意到基于创建的蓝图和动态查找器可能会遇到提升开销。

    【讨论】:

    • 我实际上不同意开销。虽然它绝对不会增加存储,但它确实增加了蓝图的负载。添加其他几个模型,Cat、Rabbit 等。如果每个模型都有一个多对多的食物,默认填充 GET 蓝图,它会影响性能。也许它在 mysql 中更明显,但我们说的是 10 倍。意思是,一个蓝图在填充关闭时持续约 50 毫秒,在填充时持续约 500 毫秒+。你可以覆盖蓝图,关闭填充,几个选项,但如果你可以通过模型的配置来避免它,那似乎是最好的选择。
    • 你是对的。我认为那将是一个有效的考虑。我知道我打算只使用动态查找器,但我认为这些默认情况下都已关闭最新版本?如果没有,这些也是电梯的考虑因素。
    猜你喜欢
    • 2012-06-29
    • 2017-08-13
    • 2015-02-01
    • 1970-01-01
    • 2015-06-27
    • 2020-08-08
    • 1970-01-01
    • 2013-04-12
    • 2014-12-01
    相关资源
    最近更新 更多