2015-04-20 3 views
0

Я создал новую запись с ветром, на отправке Я хочу немедленно получить идентификатор записи, используя основные поля, которые я использовал для создания записи, например, используя электронную почту, пожалуйста, как я могу получите идентификатор новой записи, используя ветерок.Как запросить идентификатор записи с помощью BreezeJS

это то, что я сделал

bind gotoStep2() with the save button which pass in the value of the textbox to use as predicate, 
// the save() method successfully create the record to the database, 

function gotoStep2(firstName, lastName, email) { 
     save(); 
     console.log('Save log') 
     // Get the ProfileID 
     return datacontext.profile.getProfileId(firstName, lastName, email) 
      .then(function (data) { 
       console.log('Id retrived is: ' + data.Id); // check the value returned 
       vm.profile = data; 
       //$location.path('/step-two/' + data.Id); 
       // Todo: pass the value to the next route 
      }, function (error) { 
       logError('Unable to get speaker'); 
      }); 
    } 


function getProfileId(firstName, lastName, email) { 
     var self = this; 
     var predicate = Predicate.create('firstName', '==', firstName) 
         .and('lastName', '==', lastName) 
         .and('email', '==', email); 
     var profiles = []; 

     return EntityQuery.from('Profiles') 
      .select('id') 
      .where(predicate) 
      .toType(entityName) 
      .using(self.manager).execute() 
      .then(querySucceeded, self._queryFailed); 

     function querySucceeded(data) { 
      profiles = data.results; 
      self.log('Retrieved [Profile by email] from remote data source', profiles.length, true); 
      return profiles; 
     } 
    } 

из приведенного выше запроса всегда не получить любое возвращаемое значение

Благодаря

+0

Мне нужен пример запроса о том, как получить идентификатор записи путем запроса с помощью предиката. – user3590299

ответ

0

Не совсем уверен, что я понимаю ваш вопрос, но это звучит, как вы хотите чтобы получить идентификатор недавно сохраненной записи сразу после сохранения. Если это так, то ответ ниже.

При решении вопроса о сохранении возвращается как список сохраненных объектов, так и массив keyMappings для любых объектов, чьи идентификаторы изменены в результате сохранения. то есть отображение от временных до реальных идентификаторов. то есть (Документально здесь: http://www.breezejs.com/sites/all/apidocs/classes/EntityManager.html#method_saveChanges)

myEntityManager.saveChanges().then(function (saveResult) { 
    // entities is an array of entities that were just saved. 
    var entitites = saveResult.entities; 
    var keyMappings = saveResult.keyMappings; 
    keyMappings.forEach(function(km) { 
    var tempId = km.tempValue; 
    var newId = km.realValue; 
    }); 
}); 

С другой стороны, если у вас есть объект, и вы просто хотите его «ключ» вы можете использовать EntityAspect.getKey метод. (см. http://www.breezejs.com/sites/all/apidocs/classes/EntityAspect.html#method_getKey)

// assume order is an order entity attached to an EntityManager. 
var entityKey = order.entityAspect.getKey(); 
Смежные вопросы