2016-09-13 71 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}); 
     } 
    }); 
}); 

蔭收到錯誤UpdateHandler.process稱爲無效田間小路對象模型:inner_object.name

如果有人經歷過相同的情況,請更新

回答

0

您正在通過貓鼬直接在keystone之外添加inner_object,這意味着keystone不會知道它的存在。只需將它添加到第一個配置對象:

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

我認爲這不可能通過keystone。然後你將不得不使用schema.add,但是你不能通過getUpdateHandler更新它們,也就是說你需要通過mongoose手動更新它們。 – Creynders

+0

好的。那是主要的用例:( –