我有一个地点
的架构,并且该地点的类型可以具有三个值地区、国家/地区、城市
。每种类型都有一个单独的架构,其中包含大量相关数据。
我的问题是;有没有一种方法可以将这个地方连接到模式中正确的对象?我知道我可以执行 City.find({ ... }) 来获取对象数据。
我确实添加了下面的代码,但它无法从管理部分的地点表单中进行编辑。是否有可能做到这一点?
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 可以处理这个问题吗?
最佳答案
您必须在集合之间创建关系:
在您的 Place 模型 (Place.js) 中,为每个链接的集合添加一个字段
地点.add({ 标题:{ 类型:字符串,必需:true }, 区域:{ type: 类型。关系, ref: '区域' }, Country:{ type: 类型。关系, ref: '国家' }, city:{ type: 类型。关系, ref: '城市' }, });
为每个链接的集合创建一个模型:
区域.add({ 名称:{ 类型:字符串,必需:true }, 描述:{ 类型:Types.Html,所见即所得:true,高度:400 } });
国家/地区.add({ 名称:{ 类型:字符串,必需:true }, 描述:{ 类型:Types.Html,所见即所得:true,高度:400 } });
城市.add({ 名称:{ 类型:字符串,必需:true }, 描述:{ 类型:Types.Html,所见即所得:true,高度:400 } });
要在管理中进行选择输入,您必须在地点定义中添加向下钻取属性(仍在您的模型中)
var Place= new keystone.List('地点', { map :{名称:'标题'}, 向下钻取:“区域”, 深入分析:“国家/地区”, 深入分析:“城市” });
不要忘记在 keystone.js 中添加一条路由来查看管理菜单项(注意复数):
keystone.set('nav', { ... '地点':'地点', .... });
关于node.js - KeystoneJS 变量相关帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32840048/