2015-02-05 1 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

+0

@wdberkeley Я обновил вопрос по схеме. – ZeMoon

ответ

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

Смежные вопросы