2014-12-19 113 views
1

我需要一些幫助來填充貓鼬的子文檔,我在互聯網上搜索了很多,但沒有找到一種方法來解決我的問題。填入貓鼬

我HEVE 2架構: 1 - InfraServer

var InfraServerSchema = new Schema({ 
    _id : String, 
    equipe : String, 
    servidor : String, 
    memoria : String, 
    processador : String, 
    modelo : String, 
    so : String, 
    usuario : String 
},{ collection: 'infraserver' }); 

var InfraServer = mongoose.model('InfraServer', InfraServerSchema); 
module.exports = InfraServer; 

2 - InfraDataBase

var InfraDataBaseSchema = new Schema({ 
    _id : String, 
    equipe : String, 
    nome_base : String, 
    vipname : String, 
    tipo_banco : String, 
    versao: String, 
    servidores : [{ type : mongoose.Schema.Types.ObjectId, ref: 'InfraServer' }], 
    tnsnames : String 
},{ collection: 'infradatabase' }); 

var InfraDataBase = mongoose.model('InfraDataBase', InfraDataBaseSchema); 
module.exports = InfraDataBase; 

我試圖填充陣列servidores像下面,在路線的文件夾,但是當我打印種子變量,數組返回空,並需要servidores.servidor(InfraServer中的字段),servidores._id填充正確。

InfraDataBase.find().where('equipe').in(req.session.userInf.equipe).populate('servidores').exec(function(err, seeds){ 

    if(err || !seeds) console.log("No seeds found"); 
      else 
     { 
      console.log("--->>> " + seeds); 

    } 

可以幫我找到解決這個問題的方法。

韓國社交協會

回答

3

嘗試將_id的SchemaType更改爲ObjectId。

_id : ObjectId 

此外,您不需要顯式聲明_id字段。它是爲所有Mongoose模式自動創建的。

+0

Tks尋求幫助,現在我已經返回'servidores'填充。 Tks尋求幫助 – Cauca 2015-01-23 17:47:00

2

首先用查找查詢和應用填充像這樣的代碼片段

InfraDataBase.find({equipe:{$in:[req.session.userInf.equipe]}},function(err,docs){ 

    docs.populate('servidores').exec(function(err, seeds){ 

     if(err || !seeds) console.log("No seeds found"); 
       else 
      { 
       console.log("--->>> " + seeds); 

     } 

    }) 
+0

Tks再次幫助,但沒有工作。我收到錯誤:'servidores:[544a246ca6492c492d000007]}沒有方法'填充'' – Cauca 2015-01-05 11:36:38

1

是否返回任何值,而不人口?也許問題不在於填充?

+0

是的,返回這個值:'{equipe : 'BI', nome_base: 'XXXX', vipname: 'XXXXX', tipo_banco: 'ORACLE', versao: '10', __v:0, _id: '544a4ef241586c826100000a', servidores:[544a4ed041586c8261000009 ]},{ 隊報: 'BI', nome_base: 'BASE TESTE', vipname: '', tipo_banco: '', versao: '', TNSNAMES: '', __v:0, _id:'54a2d9c64d0486d51d000007', servidores:[544a246ca6492c492d000007]}' – Cauca 2015-01-07 11:03:07

+0

如何將這些「servidores」推入「InfraDataBase」模型?這可能是一個類型問題,因爲我認爲ID必須引用例如_servidores:[「544a246ca6492c492d000007」] _。 – cdagli 2015-01-07 12:24:35

+0

進入我的收藏中的數據是'{ 「隊報」: 「XXX」, 「nome_base」: 「XXX」, 「vipname」: 「XXXX」, 「tipo_banco」: 「甲骨文」, 「versao」: 「10」, 「TNSNAMES」: 「XXXXX」, 「servidores」:[ 的ObjectId( 「544a49a87d747b1a4f000008」) ], 「__v」:0, 「_id」:的ObjectId( 「544a522d41586c826100000b」) }'我保存了一個ObjectId類型的數據 – Cauca 2015-01-07 13:41:20