O armazém OpenSearch implementa apenas a API Read do dojo.data. Consulte a documentação de referência a seguir para a API. Essa documentação é proveniente do arquivo dojo.data.api.Read e é genérica para todos os armazéns. Os atributos são a única limitação no armazém OpenSearch. Existe apenas um atributo definido para qualquer item no armazém OpenSearch, rotulado content, que é o conteúdo desse resultado da procura. Esses resultados incluem o elemento de conteúdo em um feed Atom, o elemento e descrição em um feed RSS e o conteúdo HTML de uma linha individual nos resultados para um tipo de retorno HTML.
Esta é uma API abstrata com a qual as implementações do provedor de dados estão em conformidade. Para obter mais informações sobre as APIs do 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 nomeado no item especificado. |
Array | getValues(Object item, String attribute) Recupera os valores do atributo nomeado no item especificado. |
Array | getAttributes(Object item) Retorna uma matriz com todos os atributos que esse item possui. |
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 que getValues() retornaria. |
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 valor da palavra-chave que especifica quais recursos da interface o armazém de dados implementa. |
void | close(Object request) Instrui 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 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 existirem quaisquer atributos. |
Detalhes das Funções |
---|
Retorna um único valor de atributo. Retorna defaultValue se o item não tiver um valor para o atributo. Retorna nulo, se nulo foi configurado como o valor de atributo. Retorna indefinido se o item não tiver um valor para o atributo especificado, que é o mesmo que indicar que o item não possui o atributo.
Especificar que um item x não possui um valor para um atributo y
é idêntico a especificar que um item x não possui um atributo y.
É um oxímoro para especificar que um atributo está presente mas não possui valores
ou que o item possui esse atributo mas não possui nenhum valor de atributo.
Se store.hasAttribute(item, attribute) retornar false,
store.getValue(item, attribute) retornará undefined.
var darthVader = store.getValue(lukeSkywalker, "pai");
Esse método getValues() funciona 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 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 atributo especificado.
var trueOrFalse = store.hasAttribute(kermit, "cor");
Retorna true se o valor especificado for um dos valores retornados por getValues().
var trueOrFalse = store.containsValue(kermit, "cor", "verde");
Retorna true se o parâmetro something for um item e se for proveniente da instância do armazém. Retorna false se o parâmetro something for um 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, se o item ainda não foi 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, o objeto loadItem() não concluirá nenhum trabalho e não invocará os manipuladores de retorno de chamada. Portanto, antes de invocar 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 e as expectativas dos armazéns são que eles operam de uma maneira geralmente assíncrona. Portanto, os retornos de chamada são sempre utilizados para retornar itens localizados pelos parâmetros fetch.
Um objeto do pedido é retornado imediatamente. O pedido básico é a palavra-chave args transmitida para fetch e uma função adicional anexada, abort(). Utilize o objeto do pedido retornado 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 do pedido.
Isso 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, //Indica se a consulta corresponde maiúsculas e minúsculas. O comportamento padrão é false. deep: boolean //Se uma busca deve, ou não, fazer uma procura profunda de itens e cada //item-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 padrão o enviará para o fim da lista. No caso de ordem decrescente, esses itens são exibidos no início da lista.
O método fetch() retorna um objeto JavaScript em conformidade com a API definida em dojo.data.api.Request. Em geral, é o objeto keywordArgs retornado com as funções necessárias no Request.js anexado. O propósito geral é oferecer uma maneira conveniente para um responsável pela chamada encerrar uma busca contínua.
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 e do 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
O método close() destina-se a orientar o armazém a fechar quaisquer informações associadas a um pedido específico.
O método close() destina-se a orientar o armazém a fechar quaisquer informações associadas a um pedido específico. Em geral, essa API espera receber, como um parâmetro, um objeto do pedido retornado de uma busca. Ele fecha, então, tudo associado a esse pedido, por exemplo, limpando caches internos de armazém de dados e fechando conexões 'abertas'. Para algumas implementações do armazém, essa chamada pode ser no-op.
var request = store.fetch({onComplete: doSomething}); //... store.close(request);
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.
Em geral, a maioria dos rótulos são um valor de atributo específico ou uma coleta dos valores de atributos que são combinados para rotular o item de alguma maneira. Por exemplo, para um item que representa um usuário, os métodos podem retornar o rótulo como: first_name last_name, em que o first_name e o last_name são atributos no item. Se o armazém não conseguir determinar um rótulo adequado, legível pelo usuário, ele retornará undefined. Os usuários que desejam customizar como uma instância do armazém rotula itens podem substituir a função getLabel() em suas instâncias do armazém ou estender o armazém e substituir a função na classe de extensão.
Método para inspecionar o item e retornar uma matriz de quais atributos de item foram utilizados para gerar seu rótulo, se existir algum.
Essa função é ajudar os desenvolvedores da interface com o usuário a conhecerem quais atributos de item podem ser ignorados ao exibir esse item. Essa situação ocorre quando a UI está utilizando o rótulo como um identificador geral para ocultar informações redundantes.