Expressões
As expressões do BubbleScript descrevem os valores dinâmicos do Bubble com fontes tipadas e operações encadeadas.
Como funciona uma expressão
A maioria das expressões começa com uma fonte de dados e, em seguida, transforma ou inspeciona seu valor.
currentUser()
.field("First name")
.trimmed()
.toUppercase()Aqui, currentUser() retorna um User, field("First name") retorna texto, e os métodos restantes transformam esse texto.
O BubbleScript usa métodos em vez de operadores do JavaScript:
currentPageWidth().plus(20)
currentPageWidth().greaterThan(800)
currentUser()
.loggedIn()
.and(currentPageWidth().greaterThan(800))Como filosofia geral de design, o BubbleScript referencia outros nós pelo nome amigável/de exibição, em vez do Bubble ID, sempre que possível. Ele usa o ID como alternativa quando não é possível desambiguar nós com nomes idênticos.
Comece com um valor do Bubble
As fontes de expressão representam valores disponíveis no contexto atual do Bubble. Por exemplo:
currentUser()
currentDateTime()
currentPageWidth()
currentPageThing()
currentCellThing()
element("Email input")
search("Task")
option("Task Status", "Complete")
urlParameter("project")Nem toda fonte está disponível em todos os lugares. Por exemplo, os valores de elementos pertencem a contextos de frontend, enquanto os parâmetros de workflows pertencem aos workflows.
Leia campos
Use field(...) para acessar os dados armazenados em um registro do Bubble.
currentUser().field("First name")
currentPageThing().field("Status")
currentPageThing()
.field("Owner")
.field("First name")Os tipos gerados do app permitem que o agente use campos válidos para o tipo de registro atual.
Leia valores de elementos
element(...) faz referência a outro elemento no escopo atual da interface.
element("Email input").value()
element("Save button").isVisible()
element("Task group")
.groupData()
.field("Title")Os métodos dependem do tipo de elemento. Um input fornece um valor, um grupo fornece seus dados e um grupo de repetição fornece uma lista.
Crie texto
Use staticText(...) para texto fixo e dynamicText(...) quando um valor mudar em tempo de execução.
staticText("Save changes")
dynamicText(
"Welcome, ",
currentUser().field("First name"),
"!",
)As partes dinâmicas devem produzir um valor imprimível. Normalmente, um registro ou uma lista precisa primeiro ser reduzido a um campo, uma contagem ou um valor formatado.
Compare valores e crie condições
Os métodos de comparação retornam condições que podem controlar elementos, workflows e regras de privacidade.
currentPageWidth().greaterThanOrEqual(1024)
currentPageThing()
.field("Status")
.equals(option("Task Status", "Complete"))
currentUser()
.loggedIn()
.and(
currentPageThing()
.field("Archived")
.isFalse(),
)Os campos armazenados de sim/não usam isTrue() ou isFalse(). Predicados como loggedIn() já retornam uma condição.
Pesquise dados
search(...) retorna uma lista tipada de registros do Bubble.
search("Task", {
constraints: [
{
field: "Status",
operator: "equals",
value: option("Task Status", "To do"),
},
],
sort: [
{
field: "Due date",
descending: false,
},
],
}).limitTo(20)O tipo de dados, o campo, o operador e o valor devem ser compatíveis. O resultado pode continuar por meio de operações de lista.
Trabalhe com listas
Os métodos de lista reduzem, selecionam ou transformam uma lista.
search("Task").count()
search("Task").firstItem()
search("Task").limitTo(10)
search("Task")
.field("Title")
.uniqueItems()
.joinedWith(", ")As operações disponíveis dependem do tipo dos itens. Por exemplo, listas de números podem ser somadas, enquanto listas de texto podem ser unidas.
Use valores de workflows
Os workflows fornecem valores como parâmetros e resultados de ações anteriores.
wfParam("Task")
previousStep(1)
workflowError()Os valores exatos dependem do workflow e de suas ações. Os tipos gerados do app descrevem os nomes dos parâmetros e os tipos dos resultados.
Use o tipo esperado
A expressão final deve retornar o valor exigido pelo destino.
Uma condição deve retornar sim/não.
O conteúdo de texto deve retornar texto.
Uma fonte de dados de grupo de repetição deve retornar uma lista do tipo de seu conteúdo.
Uma entrada de workflow deve corresponder ao tipo aceito por essa ação.
Uma expressão válida ainda pode estar incorreta para a propriedade em que é usada. buildprint check informa a incompatibilidade.
Preserve expressões brutas
rawBubble(...) preserva uma expressão que ainda não possui uma forma tipada em BubbleScript.
rawBubble({
type: "FutureExpression",
properties: {
mode: "legacy",
},
})Um agente deve manter as expressões brutas existentes, a menos que a tarefa exija alterá-las e seu significado completo seja compreendido.
Este artigo apresenta os principais padrões de expressão. Os tipos gerados definem as fontes e os métodos exatos disponíveis, e buildprint check valida o tipo e o contexto deles.