使用KeystoneJs的猫鼬两级人口[重复]
Posted
技术标签:
【中文标题】使用KeystoneJs的猫鼬两级人口[重复]【英文标题】:Mongoose two level population using KeystoneJs [duplicate] 【发布时间】:2015-11-17 10:25:03 【问题描述】:我需要使用 Mongoose / Keystone 填充两个级别,但遇到了障碍。
我有 3 个模型:地区、国家和城市。 Regions 包含国家,国家包含城市。
我的模型:
模型区域:
var Region = new keystone.List('Region');
Region.add(
name: type: Types.Text
, countries: type: Types.Relationship, ref: 'Country', many: true
);
示范国家
var Country = new keystone.List('Country');
Country.add(
name: type: Types.Text
, cities: type: Types.Relationship, ref: 'City', many: true
);
模范城市
var City = new keystone.List('City');
City.add(
name: type: Types.Text
);
查询:
keystone.list('Region').model.find()
.populate('countries')
.exec(function(err, regions)
console.log(regions)
);
产量:
name: 'Oceania',
countries: [
_id: 55d9b260415baa6958ac04c1
name: 'Australia',
cities: [
_id: 55d9b260415baa6958ac04c2,
_id: 55d9b260415baa6958ac04c3,
_id: 55d9b260415baa6958ac04c4
]
,
_id: 55d9b260415baa6958ac04c5
name: 'New Zealand',
cities: [
_id: 55d9b260415baa6958ac04c6,
_id: 55d9b260415baa6958ac04c7
]
]
,
name: 'Americas',
countries: [
_id: 55d9b260415baa6958ac04c1
name: 'USA',
cities: [
_id: 55d9b260415baa6958ac04d2,
_id: 55d9b260415baa6958ac04d3,
_id: 55d9b260415baa6958ac04d4
]
,
_id: 55d9b260415baa6958ac04c5
name: 'Canada',
cities: [
_id: 55d9b260415baa6958ac04e6,
_id: 55d9b260415baa6958ac04e7
]
]
]
我将如何填充城市?据我了解,Mongoose 不支持深度人口。
我可以查询结果吗?或者如何查询?
【问题讨论】:
可能不重复,因为keystone.js的查询不同 【参考方案1】:在猫鼬中你可以这样做:
regionModel.find().populate("countries").exec(function(err, regions)
if(err)
throw err;
// Regions with populate countries
cityModel.populate(regions,
path: 'countries.cities',
select: '_id name'
,function(err, regions)
//Regions with Countries and Populated Cities
);
)
其实我不熟悉keystone 语法,但我尝试将其转换为keystone 语法。希望它有效,如果没有请尝试将上面的代码转换为keystonejs
keystone.list('Region').model.find()
.populate('countries')
.exec(function(err, regions)
if(err)
throw err;
keystone.list('City').model.find()
.populate('cities')
.exec(function(err, regions)
console.log(regions)
);
);
【讨论】:
太棒了!感谢您的回复。我非常接近,几乎就在那里。感谢您的帮助。 这怎么可能,很明显,对于kewystone,aboe代码在语法上是错误的。所以如果您认为它有效,那么您可以放置实际的梯形相关代码 .populate( path: 'countries', populate: path: 'cities', )以上是关于使用KeystoneJs的猫鼬两级人口[重复]的主要内容,如果未能解决你的问题,请参考以下文章