Este objeto representa uma transação em um NodeDatabase, um mecanismo que dá maior controle ao programador sobre as mudanças locais.
Uma Transação é um objeto que armazena localmente todas as mudança realizadas em um NodeDatabase para que você possa decidir, mais tarde, se quer descartá-las ou confirmá-las.
É possível instanciar um NodeTransaction através do método ndb.newTransaction
Apenas criar um NodeTransaction não faz com que os dados sejam controlados. É preciso também utilizar os métodos ndb.pushTransaction e ndb.popTransaction para isso.
O objeto NodeTransaction possui as seguintes características:
Propriedade |
Tipo |
Descrição |
|
|
|
|
|
|
Nome do método |
Descrição |
Confirma as mudanças que estavam armazenadas localmente. Ao realizar Commit, os dados serão salvos em arquivo/Servidor RRPG e compartilhados com os demais usuários. |
|
Desfaz as mudanças que estavam armazenadas localmente. |
|
Cria um objeto NodeUndoData que contem as instruções necessário para desfazer todas as mudanças que estão armazenadas localmente. Você pode, então, depois, decidir se deseja desfazer as mudanças guardadas utilizando o método transaction:applyUndoData Observações:
|
|
Aplica as instruções de um objeto NodeUndoData para desfazer mudanças previamente feitas. Parâmetros:
|
local tr1 = ndb.newTransaction(sheet); local tr2 = ndb.newTransaction(sheet);
sheet.nome = "Maria"; -- Mudança 1
ndb.pushTransaction(sheet, tr1); sheet.idade = 20; -- Mudança 2
ndb.pushTransaction(sheet, tr2); sheet.nome = "Ana"; -- Mudança 3 ndb.popTransaction(sheet);
sheet.altura = "1.60m"; -- Mudança 4 ndb.popTransaction(sheet);
tr2:rollback();
--[[ Ao final da execução: * Mudança 1 - Será salva e compartilhada com todos, pois foi realizada fora de qualquer transação.
* Mudanças 2 e 4 - Será mantida APENAS localmente e ninguém mais enxergará as mudanças, pois foram feitas na transação "tr1" e esta não recebeu nem commit e nem rollback. Esta mudança local existirá enquanto o objeto "tr1" existir. Quando ele for destruído pelo coletor de lixo do Lua, as mudanças serão desfeitas.
* Mudança 3 - Será desfeita pois foi realizada na transação "tr2" e ela recebeu uma chamada de "rollback" ]]-- |
local tr = ndb.newTransaction(sheet);
ndb.pushTransaction(sheet, tr); sheet.nome = "maria"; sheet.idade = 20; sheet.altura = "1.60m" ndb.popTransaction(sheet);
dialogs.confirmYesNo("Deseja salvar as alterações?", function(resposta) if resposta then tr:commit(); else tr:rollback(); end; end); |
Created with the Personal Edition of HelpNDoc: Benefits of a Help Authoring Tool