2015-03-24 4 views
0

мы используем breezejs для получения как сущностей, так и не сущностей с сервера ... для не-сущностей, которые мы хотели бы связать с возвращаемыми объектами, в частности, мы хотим установить их прототип ... после прохождения кода бриза кажется, что идеальное место для этого было бы в функции ниже MappingContext ... здесь у нас есть доступ к «результату», который возвращает объект-объект клиенту, и мы также имеем доступ к свойство $ type "node". Имея эту информацию, мы могли бы найти конструкторную функцию путем синтаксического анализа $ type и результата обновления, чтобы результат выглядел как экземпляр найденной функции конструктора ... есть ли точки перехвата, которые могли бы мне помочь? моя проблема заключается в том, что, когда объекты передается на ветре, я не имею доступ к свойству «узел. $ типа», который мне нужен для того, чтобы найти функцию конструктора ... спасибоКак подключиться к mappingcontext.processAnonType

function processAnonType(mc, node) { 
     // node is guaranteed to be an object by this point, i.e. not a scalar   
     var keyFn = mc.metadataStore.namingConvention.serverPropertyNameToClient; 
     var result = {}; 

     __objectForEach(node, function (key, value) { 
      var newKey = keyFn(key); 
      var nodeContext = { nodeType: "anonProp", propertyName: newKey }; 
      visitNode(value, mc, nodeContext, result, newKey); 
     }); 
     return result; 
    } 

ответ

1

На самом деле, я думаю, вы можете делать все, что вам нужно, используя пользовательский код jsonResultsAdapter. См.: http://www.getbreezenow.com/documentation/jsonresultsadapters

В методе visitNode вы можете либо изменить входящий объект «node», либо создать новый (через свойство «node» в возвращаемом хеше). Если узел НЕ является сущностью, то все, что вы вернете, будет передано без изменений вашему клиенту.

+0

Благодарим вас за ответ. но я не понимаю, как пользовательский jsonresultsadapter поможет мне. в соответствии со ссылкой, которую вы отправили, jsonresultsadapter имеет два метода, которые я мог бы переопределить, extractresults и visitnode. при изучении этих двух методов и их текущей реализации я не вижу, где бы ни одна из этих логических схем не соответствовала бы ей, если бы была создана обычная. is not visitnode предназначен для возврата информации о том, как обрабатывать узел? – giancarloa

+0

Вы можете изменить входящий узел в visitNode (подробнее добавлено в ответ выше). –

+0

привет jay. Я только сейчас вернусь к реализации. извините заранее, чтобы быть такой тяжелой головой, но я просто не понимаю, как через jra.visitnode я могу добиться того, чего хочу. для начала документ на jra говорит в самом низу, что объекты, возвращаемые ветром, НИКОГДА не похожи на входящие объекты json. и, конечно, достаточно пройти по коду бриза, это действительно так. но выше вы говорите: «Если узел НЕ является сущностью, то все, что вы вернете, будет передано без изменений вашему клиенту». я полностью смущен. – giancarloa

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