2015-02-05 36 views
0

我試圖在將對象推入子數組之後保存使用Mongoose建模的對象。在MongoDB中將對象推入保存爲字符串的子數組

MyObject.findOne({name:'someName'}, function (err, myObject) { 
    if (err) throw err; 
    myObject.subArray.push({someKey: 'someString'}); 
    myObject.save(function(err) { 
     if (err) throw err; 
     console.log() 
    }); 
} 

當我運行在蒙戈外殼下面的查詢:

db.myobjects.find({name:'someName'}) 

我得到如下回應:

{ 
    "_id" : ObjectId("54d35cefa5c07abb14955bc3"), 
    "name" : "someName", 
    "subArray" : [ 
     "[object Object]" 
    ] 
} 

正如你所看到的,對象推入subArray一直保存爲一個字符串。

爲MyObject的模型架構如下:

var MyObjectSchema = new Mongoose.Schema ({ 
    name : String, 
    subArray : [{ 
     someKey : String 
    }] 
}); 

我在做什麼錯?

+0

你能告訴我們的模式? – wdberkeley 2015-02-09 19:52:21

+0

@wdberkeley我已經更新了模式的問題。 – ZeMoon 2015-02-10 05:33:05

回答

0

我能夠通過創建子文件模式來解決這個問題:

var SubArraySchema = new Mongoose.Schema({ 
    someKey : String 
}, {_id : false}); 

var MyObjectSchema = new Mongoose.Schema ({ 
    name : String, 
    subArray : [SubArraySchema] 
}); 
0

myObject.subArray.push({someKey: 'someString'});

必須myObject['subArray'] = [{someKey: 'someString'}];

+0

但是這不會添加到現有的數組中,只需將其替換即可。 – ZeMoon 2015-02-05 14:05:14