2016-09-13 3 views
0

Скажем, у меня есть модель, какКак получить доступ к внутреннему объекту в keystoneJS

University.add({ 
    university_id: { type: Types.Number, required: true, initial: true, index: true, unique: true }, 
    name: { type: Types.Text, required: true, index: true }, 
    address: { type: Types.Text, initial: true, required: false, index: false } 
}); 

University.schema.add({ 
    "inner_object": { 
     "name": String, 
     "phone": String, 
     "comment": String 
    } 
}); 

Я попытался обновить объект с помощью getUpdateHandler()

University.model.findOne().where('university_id', universityData.university_id).exec(function (err, university) { 
    university.getUpdateHandler(req, res).process(req.body, { 
     fields: "name, address, 'inner_object.name', 'inner_object.phone', 'inner_object.comment'" 
    }, function(err) { 
     if(err) { 
      console.log(err); 
      res.json({ status: false, data: null, message: 'Error while creating university'}); 
     } else { 
      res.json({ message: 'University updated successfully', status: true, data: university}); 
     } 
    }); 
}); 

Iam получить ошибку UpdateHandler.process вызван с недопустимым путем поля : inner_object.name

Обновите, если кто-либо прошел через тот же сценарий

ответ

0

Вы добавляете inner_object за пределы трапецеидального искажения, непосредственно через мангуст, что означает, что трапецеидальный камень не будет знать о его существовании. Просто добавьте его в первый объект конфигурации:

University.add({ 
    university_id: { type: Types.Number, required: true, initial: true, index: true, unique: true }, 
    name: { type: Types.Text, required: true, index: true }, 
    address: { type: Types.Text, initial: true, required: false, index: false }, 
    inner_object: { 
     name: {type:String}, 
     phone: {type:String}, 
     comment: {type:String} 
    } 
}); 
+0

Как вы можете добавить массив объектов, подобных этому? –

+0

Я не думаю, что это возможно благодаря трапецеидальности. Затем вам придется использовать schema.add, но вы не сможете обновить их через getUpdateHandler, то есть вам нужно будет обновить их вручную через mongoose – Creynders

+0

Ok. это была главная утилита :( –

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