【问题标题】:KeystoneJS Variable Related PostsKeystoneJS 变量相关文章
【发布时间】:2015-09-30 05:12:26
【问题描述】:

我有一个Place 的架构,并且那个地方有一个可以有三个值region, country, city 的类型。它们中的每一种类型都有一个单独的模式,其中包含大量相关数据。

我的问题是;有没有办法可以将这个地方连接到模式中的正确对象?我知道我可以做一个 City.find({ ... }) 来获取对象数据。

我确实添加了下面的代码,但它无法从管理部分的 Place 表单中编辑。是否有可能做到这一点?

Place.schema.virtual('data').get(function() {

    if (this.type == 'country') {
        var c = Country.findOne({ parent: this });
        if (c) {
            return c;
        }
    }

    if (this.type == 'city') {
        var c = City.findOne({ parent: this });
        if (c) {
            return c;
        }
    }

});

我需要具有名称的地点对象,然后是存储在不同模式中的每种类型的数据。 keystone 可以处理这个吗?

【问题讨论】:

    标签: node.js keystonejs


    【解决方案1】:

    您必须在集合之间创建关系:

    1. 在您的 Place 模型 (Place.js) 中,为每个链接的集合添加一个字段

      Place.add({ 标题:{类型:字符串,必填:真}, region:{ type: Types.Relationship, ref: 'Region' }, country:{ type: Types.Relationship, ref: 'Country' }, city:{ type: Types.Relationship, ref: 'City' }, });

    2. 为每个链接的集合创建一个模型:

      区域.add({ 名称:{类型:字符串,必需:真}, 描述:{类型:Types.Html,所见即所得:真,高度:400} });

      国家.add({ 名称:{类型:字符串,必需:真}, 描述:{类型:Types.Html,所见即所得:真,高度:400} });

      城市.add({ 名称:{类型:字符串,必需:真}, 描述:{类型:Types.Html,所见即所得:真,高度:400} });

    3. 要在管理员中进行选择输入,您必须在 Place 定义中添加一个向下钻取属性(仍在您的模型中)

    var Place= new keystone.List('Place', { 地图:{名称:'标题'}, 向下钻取:'区域', 向下钻取:'国家', 向下钻取:“城市” });

    1. 不要忘记在 keystone.js 中添加路由以查看管理菜单项(注意复数):

      keystone.set('导航', { ... “地方”:“地方”, …… });

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-01
      • 1970-01-01
      • 2016-06-12
      • 1970-01-01
      • 1970-01-01
      • 2015-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多