O AppStore implementa três das APIs dojo.data: Read, Write e Identity. Leia a seguinte documentação de referência sobre cada uma dessas APIs:
Esta é uma API abstrata que as implementações do fornecedor seguem. Para obter mais informações sobre as APIs dojo.data, visite http://www.dojotoolkit.org/node/98.
Resumo das Funções | |
---|---|
Objeto | getValue(Object item, String attribute, String defaultValue) Recupera o valor do atributo mencionado no item especificado |
Array | getValues(Object item, String attribute) Recupera os valores do atributo mencionado no item especificado |
Array | getAttributes(Object item) Retorna uma matriz com todos os atributos desse item |
Booleano | hasAttribute(Object item, String attribute) Retorna true se o *item* especificado tiver um valor para o *attribute* especificado |
Booleano | containsValue(Object item, String attribute, Object value) Retorna true se o *value* especificado for um dos valores retornados pelo método getValues |
Booleano | isItem(Object something) Retorna se *something* é um item e se é proveniente dessa instância do armazém |
Booleano | isItemLoaded(Object something) Retorna se *something* está carregado na memória local |
void | loadItem(Object keywordArgs) Para um determinado item, esse método carrega o item para que uma chamada subseqüente para store.isItemLoaded(item) retorne true |
Objeto | fetch(Object keywordArgs) Para uma determinada consulta e conjunto de opções definidas, como um início e uma contagem de itens a serem retornados, esse método executa a consulta e disponibiliza os resultados como itens de dados |
Objeto | getFeatures() Retorna um objeto simples de valores das palavras-chave que especifica quais recursos da interface são implementados pelo armazém de dados |
void | close(Object request) Orienta o armazém a fechar quaisquer informações associadas a um pedido específico |
String | getLabel(Object item) Método para inspecionar o item e retornar um rótulo legível pelo usuário para o item que fornece uma descrição geral ou adequada do item |
Array | getLabelAttributes(Object item) Método para inspecionar o item e retornar uma matriz de quais atributos do item foram utilizados para gerar seu rótulo, se existir algum |
Detalhes das Funções |
---|
O item x não ter um valor para um atributo y é idêntico a um item
x que não possui um atributo y. É um oxímoro para que o atributo
esteja presente sem ter valores ou que um item tenha esse atributo
mas não tenha nenhum valor de atributo. Se store.hasAttribute(item, attribute)
retornar false, store.getValue(item, attribute) retornará indefinido.
var darthVader = store.getValue(lukeSkywalker, "pai");
Esse método getValues() funciona exatamente como o método getValue(), mas getValues() sempre retorna uma matriz em vez de um único valor de atributo. A matriz pode ser vazia, conter um único valor de atributo ou conter vários valores de atributo. Se o item não tiver um valor para o atributo especificado, getValues() retornará uma matriz vazia: []. Se store.hasAttribute(item, attribute) retornar false, store.getValues(item, attribute) retornará [].
var friendsOfLuke = store.getValues(lukeSkywalker, "amigos");
Retorna uma matriz com todos os atributos que esse item possui. Esse método sempre retorna uma matriz. Se o item não tiver nenhum atributo, getAttributes() retornará uma matriz vazia: [].
var array = store.getAttributes(kermit);
Retorna true se o *item* especificado tiver um valor para o *attribute* especificado
var trueOrFalse = store.hasAttribute(kermit, "cor");
Retorna true se o *value* especificado for um dos valores retornados pelo método getValues.
var trueOrFalse = store.containsValue(kermit, "cor", "verde");
Retorna true se *something* for um item e for proveniente da instância do armazém. Retorna false se *something* for um valor literal, um item de uma outra instância do armazém ou qualquer objeto diferente de um item.
var yes = store.isItem(store.newItem()); var no = store.isItem("verde");
Retorna false se isItem(something) for false. Retorna false se isItem(something) for true mas o item ainda não estiver carregado na memória local. Por exemplo, um valor false será retornado se o item ainda não tiver sido lido no servidor.
var yes = store.isItemLoaded(store.newItem()); var no = store.isItemLoaded("verde");
Para um determinado item, esse método carrega o item para que uma chamada subseqüente para store.isItemLoaded(item) retorne true. Se uma chamada para isItemLoaded() retornar true antes mesmo de loadItem() ser chamado, loadItem() não funcionará e não chamará os manipuladores de retorno de chamada. Antes de chamar esse método, verifique se o item já não foi carregado.
{ item: object, onItem: Function, onError: Function, scope: object }
Para uma determinada consulta e conjunto de opções definidas, como um início e uma contagem de itens a serem retornados, esse método executa a consulta e disponibiliza os resultados como itens de dados. O formato das APIs dojo.data supõe que os armazéns de dados são operados geralmente de um modo assíncrono; portanto, os retornos de chamada são utilizados para retornar itens localizados pelos parâmetros de busca.
Um objeto do pedido retorna imediatamente. O pedido básico é a palavra-chave arguments, transmitida para fetch e para uma função adicional anexada, abort(). O objeto do pedido retornado poderia ser utilizado para cancelar uma busca. Todos os retornos de item de dados são transmitidos pelos retornos de chamada definidos nos parâmetros de busca e não estão presentes no objeto 'request'.
Esse processo não significa que os armazéns customizados não podem incluir métodos e propriedades no objeto do pedido retornado, apenas que a API não os necessita. Para obter mais informações sobre a API Request, consulte dojo.data.api.Request.
{ query: query-string or query-object, queryOptions: object, onBegin: Function, onItem: Function, onComplete: Function, onError: Function, scope: object, start: int count: int sort: array }
{ ignoreCase: boolean, //Se a consulta deve, ou não, fazer distinção entre maiúsculas ou minúsculas. O comportamento padrão é false. deep: boolean //Se uma busca deve, ou não, fazer uma procura profunda de itens e todos os //itens-filho, em vez de apenas itens de nível-raiz em um armazém de dados. O padrão é false. }
{ attribute: attribute || attribute-name-string, descending: true|false; // Opcional. O padrão é false. }Ao comparar atributos, se um item não contiver nenhum valor para o atributo (undefined), a lógica de classificação crescente o enviará para o final da lista. No caso de ordem decrescente, esses itens estarão localizados no início da lista.
O objeto do pedido também pode ter propriedades adicionais quando ele é retornado, como a propriedade request.store, por exemplo, que é um ponteiro para o objeto de armazém de dados no qual fetch() é um método.
// Buscar todos os livros identificados pela consulta e chamar 'showBooks' ao concluir. var request = store.fetch({query:"todos os livros", onComplete: showBooks}); // Buscar todos os itens no armazém e chamar 'showEverything' ao concluir. var request = store.fetch(onComplete: showEverything); // Buscar somente 10 livros que correspondam à consulta 'todos livros', começando pelo quinto livro encontrado durante a procura. // Isso demonstra como a paginação pode ser feita para consultas específicas. var request = store.fetch({query:"todos os livros", start: 4, count: 10, onComplete: showBooks}); // Buscar todos os itens que correspondam à consulta, chamando 'callback' cada vez que um item for localizado. var request = store.fetch({query:"foo/bar", onItem:callback}); // Buscar os primeiros 100 livros do autor King, chamar showKing quando até 100 itens tiverem sido localizados. var request = store.fetch({query:{author:"King"}, start: 0, count:100, onComplete: showKing}); // Localizar os livros escritos pelo Autor King. Classificar por título e publicador, em seguida, retornar os primeiros 100 itens dos classificados. var request = store.fetch({query:{author:"King"}, sort: [{ attribute: "título", descending: true}, {attribute: "publicador"}], ,start: 0, count:100, onComplete: 'showKing'}); // Buscar os primeiros 100 livros por autores que comecem com o nome King; em seguida, chamar showKing quanto até 100 itens tiverem sido localizados. var request = store.fetch({query:{author:"King*"}, start: 0, count:100, onComplete: showKing}); // Buscar os primeiros 100 livros por autores que terminam com 'ing', mas tenham apenas um caractere antes dele (King, Bing, Ling, Sing, etc.), em seguida, chamar showBooks quando até 100 itens // tiverem sido localizados. var request = store.fetch({query:{author:"?ing"}, start: 0, count:100, onComplete: showBooks}); // Buscar os primeiros 100 livros do autor King, em que o nome seja exibido como King, king, KING, kInG, etc.; em seguida, chamar showKing quanto até 100 itens tiverem sido localizados. var request = store.fetch({query:{author:"King"}, queryOptions:(ignoreCase: true}, start: 0, count:100, onComplete: showKing}); // Paginação: var store = new dojo.data.LargeRdbmsStore({url:"jdbc:odbc:foobar"}); var fetchArgs = { query: {type:"funcionários", name:"Hillary *"}, // correspondência de cadeia sort: [{attribute:"departamento", descending:true}], start: 0, count: 20, scope: displayer, onBegin: showThrobber, onItem: displayItem, onComplete: stopThrobber, onError: handleFetchError, }; store.fetch(fetchArgs); // ... // Quando o usuário pressiona o botão "Próxima Página"... fetchArgs.start += 20; store.fetch(fetchArgs); // obter os próximos 20 itens
var request = store.fetch({onComplete: doSomething}); //... store.close(request);
Esta é uma API abstrata que as implementações do fornecedor seguem. Essa API especifica as funções necessárias para gravar em uma origem de dados.
Resumo das Funções | |
---|---|
Objeto | getFeatures() Consulte dojo.data.api.Read.getFeatures |
Objeto | newItem(Object keywordArgs) Retorna um item recém-criado |
Booleano | deleteItem(Object item) Exclui um item do armazém |
Booleano | setValue(Object item, String attribute, Object value) Configura o valor de um atributo em um item, substituindo quaisquer valor ou valores anteriores |
Booleano | setValues(Object item, String attribute, Array values) Inclui cada valor na matriz *values* como um valor do atributo especificado, no item especificado, substituindo quaisquer valor ou valores anteriores |
Booleano | unsetAttribute(Object item, String attribute) Exclui todos os valores de um atributo em um item |
Booleano | save(keywordArgs) Salva todas as alterações que foram feitas localmente no servidor |
Booleano | revert() Descarta quaisquer alterações não salvas |
Booleano | isDirty(item) Para um determinado item, isDirty(), retorna true se o item tiver sido modificado desde a última conclusão do método de salvamento |
Detalhes das Funções |
---|
var kermit = store.newItem({name: "Kermit", color:[blue, green]});
var success = store.deleteItem(kermit);
var success = store.set(kermit, "cor", "verde");
var success = store.setValues(kermit, "cor", ["verde", "água"]); success = store.setValues(kermit, "cor", []); if (success) {assert(!store.hasAttribute(kermit, "cor"));}
var success = store.unsetAttribute(kermit, "cor"); if (success) {assert(!store.hasAttribute(kermit, "cor"));}
{ onComplete: function onError: function scope: object }
store.save({onComplete: onSave}); store.save({scope: fooObj, onComplete: onSave, onError: saveFailed});
var success = store.revert();
var trueOrFalse = store.isDirty(kermit); // true se kermit estiver prejudicado var trueOrFalse = store.isDirty(); // true se algum item estiver estiver prejudicado
Esta é uma API abstrata que as implementações do fornecedor seguem. As funções definidas recuperam a identidade individual de um item, assim como os atributos que forneceram a identidade.
Resumo das Funções | |
---|---|
Objeto | getFeatures() Consulte dojo.data.api.Read.getFeatures |
Objeto | getIdentity(Object item) Retorna um identificador exclusivo para um item |
Array | getIdentityAttributes(Object item) Retorna uma matriz de nomes de atributos que são utilizados para gerar a identidade |
Objeto | fetchItemByIdentity(Object keywordArgs) Para uma determinada identidade de um item, esse método retorna o item que possui essa identidade por meio do retorno de chamada onItem |
Detalhes das Funções |
---|
var itemId = store.getIdentity(kermit); assert(kermit === store.findByIdentity(store.getIdentity(kermit)));
var itemId = store.getIdentity(kermit); var identifiers = store.getIdentityAttributes(itemId); assert(typeof identifiers === "matriz" || identifiers === null);
{ identity: string|object, onItem: Function, onError: Function, scope: object }