ForgeTotal.js 5
sv

Total.js 5 (backend)

Rutter, actions, scheman, databaser, WebSocket, vyer och allt som körs på servern.

ReceptTaggar

Validera en JSON-body med en action

Definiera ett indataschema på en action och låt Total.js avvisa ogiltiga förfrågningar innan din kod körs.

routingactionsvalidation

Exponera actions via en enda API-endpoint

Deklarera ROUTE('API ...')-endpoints så att en klient kan anropa många actions med POST {schema, data} på en enda URL.

routingapiactions

Läs URL-parametrar i en route

Deklarera dynamiska segment som {id} i en route och läs dem från $.params.

routingparams

Fånga många URL:er med en wildcard-route

Avsluta en route med * för att matcha allt under en sökväg och behåll specifika routes för undantagen.

routing

Hantera varje HTTP-metod

Deklarera routes för GET, POST, PUT, PATCH och DELETE och läs metoden från $.method.

routinghttp

Begränsa en route med flaggor

Lägg till @flaggor som @json, @xml eller @upload så att en route bara matchar de förfrågningar den är avsedd för.

routingflags

Läs query string och request-body

Använd $.query för URL-parametrarna och $.body för JSON- eller formulärdata i en route-handler.

routingrequest

Begränsa payloadstorlek och timeout för en route

Lägg till <1kb eller <10s på en route för att begränsa förfrågans storlek eller den tid handlern får ta.

routingsecuritylimits

Deklarera typade routeparametrar i en action

Använd alternativet params i NEWACTION så att Total.js validerar URL-parametrarna innan din kod körs.

actionsroutingvalidation

Välj hur du svarar

Skicka JSON, HTML, ren text, XML, omdirigeringar, tomma svar eller binärdata från en route-handler.

routingresponse

Läs headers och arbeta med cookies

Läs request-headers från $.headers, läs och skriv cookies med $.cookie() och sätt response-headers.

routingheaderscookies

Ta emot filuppladdningar

Acceptera multipart/form-data med flaggan @upload och läs de uppladdade filerna från $.files.

routinguploadfiles

Tillåt cross-origin-förfrågningar med CORS

Anropa CORS() för att låta en origin, flera origins eller alla origins använda dina routes från en webbläsare.

securitycorsrouting

Rendera en vy utan att skriva en handler

En route utan handler renderar vyn som är uppkallad efter dess URL, eller den vy du anger.

routingviews

Välj rätt typ av input för en åtgärd

Välj typer för inmatning, parametrar, frågeställningar och utgångsdefinitioner, inklusive omvandlingar och avvisade värden.

actionsvalidationtypes

Validera query string i en action

Deklarera query i NEWACTION för att validera och konvertera URL-parametrarna, och läs de rensade värdena från $.query.

actionsvalidationquery

Filtrera svaret från en action med output

Deklarera output så att bara de angivna fälten lämnar actionen, till exempel för att aldrig läcka en lösenordshash.

actionssecurity

Kräv en användare eller en behörighet i en action

Använd alternativen user och permissions i NEWACTION så att auktoriseringen ligger vid actionen och inte i varje route.

actionsauthsecurity

Skydda routes med AUTH

Autentisera varje förfrågan med AUTH() och begränsa routes till inloggade eller anonyma användare med prefixen + och -.

authroutingsecurity

Deklarera routen inuti actionen

Lägg routen i route-alternativet i NEWACTION och ha URL, validering och kod på ett ställe.

actionsrouting

Logga in användare med den inbyggda sessionsautentiseringen

Ge AUTH() ett alternativobjekt för att få signerade sessionscookies, ett sessionslager och utloggning utan att skriva infrastrukturen.

authsessionssecurity

Anropa en action från din egen kod

Använd ACTION() för att köra en action från en timer, ett jobb eller en annan action, med egen payload, query och användare.

actions

Kedja flera actions i en route

Lista flera actions efter --> för att köra dem i följd på samma payload och markera vilken som svarar med (response).

actionsrouting

Lägg till en middleware på en route

Registrera en middleware med MIDDLEWARE() och koppla den till routes med flaggan #name.

middlewareroutingsecurity

Bygg en WebSocket-chatt

Deklarera en SOCKET-route, lyssna på meddelanden och sänd dem till alla anslutna klienter.

websocketrealtime

Anslut till en WebSocket-server från Node

Använd WEBSOCKETCLIENT för att öppna en WebSocket-anslutning från din app, skicka meddelanden och reagera på svaren.

websocketrealtimeintegrations

Frikoppla din kod med events

Skicka och lyssna på applikations-events med EMIT(), ON(), ONCE() och OFF() så att moduler inte anropar varandra direkt.

eventsarchitecture

Lagra och läs data med den inbyggda NoSQL-databasen

Infoga och fråga dokument med NOSQL() och exponera dem via actions, utan att installera någon databas.

nosqldatabaseactions

Fråga NoSQL-databasen

Filtrera, sortera, paginera och projicera dokument med where, in, between, search, sort, take, skip och fields.

nosqldatabasequeries

Uppdatera och ta bort NoSQL-dokument

Ändra dokument med update() och where(), ta bort dem med remove() och läs hur många som berördes.

nosqldatabase

Använd DATA-API:et för att byta databas

DATA adresserar en tabell som databas/tabell, så att samma frågekod fungerar med den inbyggda NoSQL och med andra databaser.

databasenosqlquerybuilder

Cacha värden i minnet

Spara värden med CACHE.set() och en utgångstid, läs dem med CACHE.get() och rensa dem med remove() eller reset().

cacheperformance

Spara små inställningar permanent med MEMORIZE

Behåll ett JSON-objekt på disk som överlever omstarter, för räknare och inställningar som inte behöver en databas.

storagesettings

Generera unika id:n och hashar

Skapa id:n med UID() och GUID() och hashar med HASH(), och vet vilken du ska använda var.

utilitiesidssecurity

Cacha långsamma resultat på disk med FILECACHE

Använd FILECACHE() för att beräkna ett resultat en gång och återanvända det från en fil under en period, även efter en omstart.

cacheperformancefiles

Lagra uppladdade filer med FILESTORAGE

Spara uppladdningar i ett hanterat fillager med file.fs() och skicka tillbaka dem med $.filefs().

filesuploadstorage

Rendera en vy med en layout

Rendera en HTML-vy med en modell, loopa över data och skicka värden till layouten.

viewslayouttemplates

Använd villkor och escaping i vyer

Förgrena med @{if}, @{else} och @{fi} och välj mellan escapad utdata @{value} och rå HTML @{!value}.

viewstemplates

Loopa över arrayer och objekt i vyer

Upprepa markup med @{foreach} för arrayer och objekt och använd indexet för det aktuella elementet.

viewstemplates

Inkludera vyer och tillgångar

Återanvänd markup med @{view()} och lägg till skript och stilar med @{import()}.

viewstemplatesassets

Fyll layoutens sektioner från en vy

Deklarera en sektion i en vy med @{section} och skriv ut den i layouten med @{section('name')}, och välj en annan layout per förfrågan.

viewslayouttemplates

Lägg till vyhelpers och läs config i vyer

Registrera funktioner i DEF.helpers för att anropa dem från vyer och läs config-värden med @{'%key'}.

viewstemplatesconfig

Konvertera Markdown till HTML

Använd prototypen String.markdown() för att rendera Markdown-text till HTML, för innehåll som användare sparat eller som finns i filer.

contentmarkdown

Generera text med Tangular-mallar

Använd Tangular.render() för att fylla i mallar för e-post, dokument och meddelanden med villkor, loopar och helpers.

templatescontent

Rendera mallar från text, filer och URL:er med TEMPLATE

Använd TEMPLATE() för att rendera en Tangular-mall som är en text, en fil i mallmappen eller en URL, med egna helpers och en standardmodell.

templatescontenttangular

Jämför två listor med DIFFARR: vad som ska läggas till, uppdateras och tas bort

Använd DIFFARR() för att jämföra posterna som sparats i databasen med posterna i ett formulär och få fram de som ska läggas till, uppdateras och tas bort.

utilitiesarraysforms

Query Builder: DB() och NEWDB() med din egen databasdrivare

Bygg frågor med DB(.find().where(.sort() och låt en registrerad drivrutiner köra dem, medan en registrerat drivrutin implementerar stödda databasverksamhet.

databasequerybuilder

Konfigurera appen med filen config

Behåll inställningar i en config-fil och läs dem via CONF.

configsettings

Kryptera och dekryptera data med en nyckel

Förvandla objekt till ogenomskinliga tokens med ENCRYPT() och läs tillbaka dem med DECRYPT(), för signerade länkar och kortlivade tokens.

securitycrypto

Anropa externa tjänster med API() och drivrutinerna i NEWAPI()

Registrera en drivrutin för en tjänst med NEWAPI() och anropa den från åtgärder med API(name, schema, data), i samma stil för callback, fel och löfte som query buildern.

apiservicesintegrations

Talk till språkmodeller med AIMODEL(), NEWAIMODELL() och AIPARSER()

Bygg en chat-förfrågan med AIMODEL(), låt en förare som är registrerad med NEWAIMODELL() skicka den till en leverantör, och läs streamed svar med AIPARSER().

aillmintegrations

Begränsa misslyckade försök med BLOCKED

Räkna försök per IP-adress med BLOCKED() och svara 429 när gränsen nåtts, för inloggningar och lösenordsåterställningar.

securityrate-limiting

De små globala hjälparna: MAIN, REPO, FUNC, NOW, CLONE, COPY, QUERIFY och PROMISIFY

Använd applikation globaler, datum, djupa kopior, frågefälten och lovande hjälpare.

globalsutilitieshelpers

Samla fel fel med ErrorBuilder, logga dem med ERROR() och för ett granskningsspår med AUDIT()

Svara med flera fel samtidigt med ErrorBuilder, svaret SUCCESS(), hur ERROR() registrerar misslyckanden och hur AUDIT() lägger till i en loggfil vem som gjorde vad.

errorsloggingaudit

Skjut upp arbete med setTimeout2() och clearTimeout2()

Använd setTimeout2() för att köra en funktion en gång efter att anropen slutat komma, där den tidigare timern med samma id ersätts, och avbryt den med clearTimeout2().

timersdebounceutilities

Token kopplade till en webbläsare med ENCRYPTREQ() och DECRYPTREQ()

Kryptera ett värde tillsammans med förfrågans user agent (och valfritt IP-adressen) och läs tillbaka det bara från samma klient.

securityencryptiontokens

Säkerhetskopiera en mapp med BACKUP() och RESTORE(), och kör kommandon med SHELL()

Packa en katalog till en enda fil och packa upp den igen med BACKUP() och RESTORE(), och kör ett skalkommando i projektmappen med SHELL().

backupshellfiles

Sätt applikationen i underhåll med PAUSESERVER()

Pausa servern med ett namn så att varje förfrågan får en 503-sida, återuppta den och vet att anropet utan andra argument växlar.

maintenanceserveravailability

Affärsregler som text med NEWMACRO()

Kompilera små regler skrivna i ett enkelt språk (IF, ELSE, AND, OR, RETURN, helper-anrop) till en funktion som du kör med en modell, så att reglerna kan finnas i en fil eller en databas.

macrosrulesscripting

Servera statiska filer från mappen public

Filer i katalogen public serveras automatiskt, utan att någon route behövs.

staticfiles

Anropa en annan adress med AJAX() från servern

Använd AJAX() för att anropa en HTTP-adress med en JSON-kropp och få det tolkade svaret, som löfte eller med callback, och vet vad som händer med fel och XML.

httprequestsajax

Anropa andra HTTP-API:er med RESTBuilder

Gör GET- och POST-förfrågningar till en annan tjänst, sätt headers och en timeout och läs status och det tolkade svaret.

integrationshttprestbuilder

Frigör en ström när den slutar med CLEANUP()

Använd CLEANUP() för att förstöra en ström så snart den är klar eller har misslyckats, så att inga filhandtag lämnas öppna, med en callback eller som ett löfte.

streamsfilescleanup

Översätt en vy till flera språk

Markera texter i vyer med @(...) och ange översättningar i resursfiler som väljs av LOCALIZE().

localizationi18nviews

Kör kod enligt ett schema med CRON

Registrera en funktion med CRON() och en cron-rad med fem fält, och lär dig när kontrollen körs och hur man tar bort ett jobb.

cronschedulerjobs

Köra tungt arbete i en tråd eller en barnprocess

Använd NEWTHREAD() för att starta en workertråd, skicka meddelanden till den och läsa svaren utan att blockera huvudprocessen.

workerthreadperformance

Dela några arbetstrådar med NEWTHREADPOOL()

Starta ett fast antal workers, låna en med pool.exec() när det finns arbete, lämna tillbaka den med release() och låt övriga jobb vänta på en ledig worker.

workerthreadpoolperformance

Anropa andra servrar med REQUEST och spara filer med DOWNLOAD

Använd REQUEST() för HTTP-anrop på låg nivå med full kontroll över metod, headers, query och body, och DOWNLOAD() för att strömma en fjärrfil till disk.

httprequestdownload

Skicka e-post från en vy

Konfigurera SMTP i filen config, rendera en vy som meddelandetext med MAIL() och skicka färdig HTML med HTMLMAIL().

mailsmtpemail

Anpassa sidorna 404 och 401

Registrera hanterare med ROUTE('#404') och ROUTE('#401') för att ersätta de inbyggda felsidorna, och utlös dem själv med $.fallback().

errors404routing

Skicka ett meddelande till dig själv med LOGMAIL()

Skicka ett vanligt text- eller JSON-meddelande till en adress utan vy, för loggar och larm, med samma SMTP-inställningar som MAIL().

mailsmtplogging

Skicka filer och strömmar till klienten

Servera en fil från disk med $.file(), tvinga fram ett nedladdningsnamn, strömma genererat innehåll med $.stream() och svara 404 när filen saknas.

filesdownloadstream

Vidarebefordra förfrågningar till en annan server

Använd PROXY() för att koppla ett URL-prefix till en uppströmsserver, välj hur sökvägen kopieras och $.proxy() för att vidarebefordra en enskild rutt.

proxygatewayintegrations

Publicera en lokal server genom en tunnel med PROXYSERVER() och PROXYCLIENT()

Låt en Total.js-server med offentlig adress vidarebefordra förfrågningar till ett program som bara körs på en privat maskin, med en WebSocket-tunnel som den privata sidan öppnar.

proxytunnelwebsocketintegrations

Skydda formulär och förfrågningar med CSRF-token

Skapa en token med $.csrf(), skicka med den i förfrågan och verifiera den i en middleware så att förfrågningar från andra webbplatser avvisas.

securitycsrfmiddleware

Gruppera actions i ett schema och återanvänd input-definitioner

Använd NEWSCHEMA() för att deklarera sammanhörande actions under ett namn och dela en input-definition mellan actions med en fil i jsonschemas/.

schemaactionsvalidation

Bygg en bearbetningspipeline med transforms

Registrera flera steg under ett namn med NEWTRANSFORM() och låt ett värde gå igenom dem i ordning med TRANSFORM().

transformpipeline

Utbyt meddelanden med Total Messaging Service

Slå på TMS WebSocket-slutpunkten och låt externa klienter ta emot publicerade meddelanden, skicka meddelanden till din app och anropa dess funktioner.

tmspublishsubscribewebsocketmessaging

Bygg en komplett REST-resurs med actions

Deklarera actions för query, read, insert, update, patch och remove över NoSQL-databasen, med validering, ett 404 för saknade poster och rutter som kopplar varje HTTP-metod.

actionscrudrestnosql

Konfigurera en WebSocket-rutt med flaggor, autentisering och parametrar

Välj meddelandetyp med @text eller @binary, kräv en inloggad användare med prefixet +, kontrollera en CSRF-token med @csrf och läs URL-parametrar i SOCKET-rutter.

websocketrealtimesecurity

Minifiera och slå ihop CSS, JavaScript och HTML

Statiska filer och HTML-svar minifieras automatiskt; använd MERGE() för att servera flera filer som en och inställningarna $minify för att stänga av det.

performancecssjavascripthtmlminification

Ändra storlek på och konvertera bilder

Bearbeta bilder med Image.load(), kedja operationer för storlek, beskärning och format, spara resultatet, mät dess storlek och servera miniatyrer med $.image().

imagesthumbnailsgraphicsmagick

Kontrollera gränserna för det numeriska schemat i stället för att anta en fullständig tvång

Kontrollera Int, SmallInt, TinyInt och Number2 med inhemska kompakta scheman, inklusive fraktionsvärden, noll- och out-of-range-inmatningar.

validationschemanumbersboundaries

Använd de inbyggda hjälpfunktionerna för string, number, date och array

Total.js utökar String, Number, Date och Array med hjälpfunktioner för slugs, hashar, formatering, tolkning, gruppering och sökning och erbjuder U.extend() och U.clone() för objekt.

utilitieshelpersstringarraydate

Rekordhandlingar med en inhemska revision

Observera revisionsalternativet och uttryckliga $.audit() samtal utan att kontakta en loggtjänst eller skriva känslig inmatning till en ansökan logg.

actionsauditsecurity

Köra i debug- och releaseläge

Alternativen i Total.run() väljer mellan debug- och releaseläge; läs läget från DEBUG och begränsa rutter till ett läge med @debug och @release.

deploymentdebugreleaseenvironment

Testa applikationen med den inbyggda testkörningen

Skriv en test.js som startar appen, registrerar tester med Test.push(), kontrollerar resultat med Test.print() och avslutas med en kod skild från noll när ett test misslyckas.

testingci

Använd alla CPU-kärnor med klusterläget

Börja flera arbetsprocesser bakom en enda port med klusteralternativet Total.run(), och veta vad som delas mellan dem och vad som inte är.

clusterperformancedeployment

Ladda en JavaScript-modul från en URL med IMPORT()

Ladda ner en fil med JavaScript från en adress, behåll den i mappen tmp, ladda den med require och använd det den exporterar; det andra anropet laddar inte ner den igen.

modulesdownloaddependencies

Bygg ett flöde av komponenter med Flow.load() och kör det med exec()

Beskriv en FlowStream som komponenter och kopplingarna mellan dem, ladda den i applikationen, skicka ett meddelande genom den och läs svaret, och ändra konfigurationen för en komponent medan den körs.

flowflowstreamcomponentsautomation

Testa en Flow-komponent för sig med Flow.test()

Ladda en komponent i ett eget flöde, skicka ett meddelande till den från koden och läs vad den skickar till sina utgångar, utan att bygga hela flödet.

flowflowstreamcomponentstests

Anropa ett Python-program som fortsätter köra med PYPELINE()

Starta ett Python-skript från applikationen, skicka JSON-meddelanden till det över en socket och ta emot dess svar, med skriptet omstartat om det dör.

pythonpypelineintegrationsai

Enums och stringformat valideringsgränser

Kör positiva och negativa compact-schema kontroller för enum, färg, Base64, Zip, ikoner, JSON och IP format.

total5reference

TotalAPI och Componentator service gränser

Kontrollera den inaktiverade TotalAPI-branschen och Componentator lokalt återanvändning utan att göra externa service samtal.

total5reference

QueryBuilder-verksamhet, filter och föraravtal

Inspektera inhemska DB- och NEWDB-alternativ, resultat, uppbrott, fel och filterformer utan att förväxla en byggare med en databasdrivare.

total5reference

Kompilera och köra en inhemska serverkomponent

Kompilera tillförlitlig Total.js HTML-komponent, skapa ett exempel, validera meddelanden, konfigurera den och släppa dess resurser.

total5reference

Kontrollera callbacks, manuell auktorisering och villkorliga svar

Utföra jsonstring, svara, gjort, framgångsrik, auktoriserad, anpassad och senast modifierad hantering.

total5reference

Åtgärd transportalternativ och uttrycklig TMS publicering

Test CSRF, kryptera, komprimera och publicera mot verkliga HTTP och TMS istället för att anta metadata utövas beteende.

total5reference

Invaliderar frisläpps-läge statiska cachor med Touch

Serve och modifiera en tillfällig statisk fil, ta bort dess cached representation och ta bort cached 404 entries.

total5reference

OPENCLIENT RPC, händelser och delade anslutningar

Öva OPENCLIENT med en lokal protokoll fixering, inklusive initialisering, callback korrelation, timout och logisk-klient borttagning.

total5reference

Ladda upp FlowStream-filer och utföra isolerade arbetare

Kör samma tillförlitliga FlowStream schema som en arbetare tråd och ett barn process, ladda .flow filer och ta bort instanser.

total5reference

Aktionslivscykel hål, resultat förlängning och administratör guards

Öva oninput, onoutput, extend, sa och su med giltiga, ogiltiga och misslyckade åtgärder.

total5reference

Real SQL med native QueryBuilder och SQLite transaktioner

Registrera en begränsad SQLite-drivrutin, köra parameterad CRUD och verifiera uppgiften, begränsa misslyckandet och rulla tillbaka mot en filbaserad databas.

total5reference

Ladda upp applikationsresurser och undvika löptidspaket överraskningar

Kör LOAD i en separat process och verifiera att NPMINSTALL återanvänder ett redan tillgängligt paket utan nätverksåtkomst.

total5reference

Sök efter en verklig lokal LDAP-direktiv

Fråga en isolerad OpenLDAP-instans och verifiera bindresultatet i totalt 5 0,19.

total5reference

Förpackningsfiler som en Total.js-paket

Skapa ett lokalt paket, ladda upp dess definitioner genom ramstartladdaren och verifiera extraktionen till .src.

total5reference

Själva uppladdade filer rengöring och bygga frågor länkar

Kontrollera standarduppladdning rengöring, autoclear(falsk), explicit tydlig och href fråga ersättning.

total5reference