我的问题是填充查询返回一个空数组。我知道有无数的帖子,但是它们都没有给我提供新的见解。
我的第一个模式: station.js
var stationSchema = new Schema({
_id: Number,
Tripcount: [{ type: Number, ref: 'Tripcount'}]
},
{collection: 'stations'}
);
module.exports = mongoose.model('Station', stationSchema);我的第二个: trips.js
var tripSchema = new Schema({
_id: Number,
Tripcount: Number
},
{collection: 'trips'}
);
module.exports = mongoose.model('Tripcount', tripSchema);我的查询看起来是这样的,根据大多数答案,这应该做好以下工作:
var Station = require('./station.js');
var query = Station.find()
.populate({
path: 'Tripcount',
model : 'Tripcount'
});
query.exec(function(err, stations){
if(err)
res.send(err);
res.json(stations);
});使用邮递员得到的车站,它显示Tripcount: []。你知道我做错了什么吗?
发布于 2017-05-03 20:43:52
我想在以前的评论基础上再加一个答案。你的数据似乎没有连接起来。猫鼬填充将获取station的Tripcount数组中的值,并使用_id字段尝试并查找Tripcount集合中的Tripcount对象,因此假设您有以下站点
{
_id: 1,
Tripcount: [100, 101, 102]
}在Tripcount集合中,您需要以下内容才能与上面的站点匹配
[
{
_id: 100,
Tripcount: 2
},
{
_id: 101,
Tripcount: 4
},
{
_id: 102,
Tripcount: 6
},
]然后,当您运行您的查询时,您将得到以下内容
{
_id: 1,
Tripcount: [
{
_id: 100,
Tripcount: 2
},
{
_id: 101,
Tripcount: 4
},
{
_id: 102,
Tripcount: 6
},
]
}发布于 2017-05-03 20:20:12
你能试试以下几种吗。将空对象传递给查找方法。
var Station = require('./station.js');
var query = Station.find({})
.populate({
path: 'Tripcount',
model : 'Tripcount'
});
query.exec(function(err, stations){
if(err)
res.send(err);
res.json(stations);
});https://stackoverflow.com/questions/43768317
复制相似问题