我需要一些有关mongoose的populate和virtuals的帮助 .

当我得到一个“cidade”列表使用

router.get('/',function(req,res,next){ ....

我想用“estado”中的一些额外信息填充结果为“_id”和“nome” .

但是,当我在控制台中打印结果时,我只有来自“cidade”的结果,而没有来自“estado”的数据信息 .

'cidade'和“estado”之间的关系是N:1,字段'uf'是两个集合的链接 .

我究竟做错了什么?

以下是馆藏数据样本

//cidades

    "_id":213123......
    "uf":"AL"
    "cidade":"ARARAS"
......


//estados

    "_id":2aaa3123......
    "uf":"AL"
    "nome":"AZALU"
.....


//router to cidades

'use strict';
const express = require('express');
const router = express.Router();
//const querystring = require('querystring');
const Cidade = require('../models/cidade'); 
const callback=function(err,data,res){
     console.log(data);//??? only data from "cidade", no "estado" info
     if (err) return res.status(500).json(err);
     return res.status(200).send(data);
};

router.get('/',function(req,res,next){
    const query=new RegExp(req.query.where,'i');
    Cidade.find({ cidade: query })
    .populate('id_estado')
    .exec( (err,data) => {
       callback(err,data,res)
    })
});


//model estados

estadosSchema = new mongoose.Schema({
  uf: {type: String, unique:true},
  nome: {type: String, unique:true}
});
module.exports = mongoose.model('Estado', estadosSchema,'estados' );


//model cidades    

cidadesSchema = new mongoose.Schema({
  uf: {type: String, unique:true},
  cidade: {type: String, unique:true}
},{ toJSON: { virtuals: true } });

cidadesSchema.virtual('id_estado', {
  ref: 'Estado', // The model to use
  localField: 'uf', // Find Estado where `localField`
  foreignField: 'uf', // is equal to `foreignField`
  justOne: false
});


module.exports = mongoose.model('Cidade', cidadesSchema,'cidades' );