[{"data":1,"prerenderedAt":878},["ShallowReactive",2],{"navigation":3,"-guide-database":225,"-guide-database-surround":873},[4,76,219],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"Docs","/guide","1.guide/0.index",[9,11,16,21,26,31,36,41,46,51,56,61,66,71],{"title":5,"path":6,"stem":7,"icon":10},"ph:book-open-duotone",{"title":12,"path":13,"stem":14,"icon":15},"Server Utils","/guide/utils","1.guide/1.utils","ri:tools-line",{"title":17,"path":18,"stem":19,"icon":20},"Tasks","/guide/tasks","1.guide/10.tasks","codicon:run-all",{"title":22,"path":23,"stem":24,"icon":25},"Server Routes","/guide/routing","1.guide/2.routing","ri:direction-line",{"title":27,"path":28,"stem":29,"icon":30},"WebSocket","/guide/websocket","1.guide/3.websocket","cib:socket-io",{"title":32,"path":33,"stem":34,"icon":35},"KV Storage","/guide/storage","1.guide/4.storage","carbon:datastore",{"title":37,"path":38,"stem":39,"icon":40},"SQL Database","/guide/database","1.guide/5.database","ri:database-2-line",{"title":42,"path":43,"stem":44,"icon":45},"Cache","/guide/cache","1.guide/6.cache","ri:speed-line",{"title":47,"path":48,"stem":49,"icon":50},"Fetch","/guide/fetch","1.guide/7.fetch","ri:global-line",{"title":52,"path":53,"stem":54,"icon":55},"Assets","/guide/assets","1.guide/8.assets","ri:image-2-line",{"title":57,"path":58,"stem":59,"icon":60},"Plugins","/guide/plugins","1.guide/9.plugins","ri:plug-line",{"title":62,"path":63,"stem":64,"icon":65},"Configuration","/guide/configuration","1.guide/97.configuration","ri:settings-3-line",{"title":67,"path":68,"stem":69,"icon":70},"TypeScript","/guide/typescript","1.guide/98.typescript","tabler:brand-typescript",{"title":72,"path":73,"stem":74,"icon":75},"Nightly Channel","/guide/nightly","1.guide/99.nightly","ri:moon-fill",{"title":77,"path":78,"stem":79,"children":80,"icon":82},"Deploy","/deploy","2.deploy/0.index",[81,83,87,113,118],{"title":77,"path":78,"stem":79,"icon":82},"ri:upload-cloud-2-line",{"title":84,"path":85,"stem":86,"icon":50},"Edge Workers","/deploy/workers","2.deploy/1.workers",{"title":88,"path":89,"stem":90,"children":91,"page":112},"Runtimes","/deploy/runtimes","2.deploy/10.runtimes",[92,97,102,107],{"title":93,"path":94,"stem":95,"icon":96},"Node.js","/deploy/runtimes/node","2.deploy/10.runtimes/1.node","akar-icons:node-fill",{"title":98,"path":99,"stem":100,"icon":101},"WinterJS","/deploy/runtimes/_winterjs","2.deploy/10.runtimes/_winterjs","game-icons:cold-heart",{"title":103,"path":104,"stem":105,"icon":106},"Bun","/deploy/runtimes/bun","2.deploy/10.runtimes/bun","simple-icons:bun",{"title":108,"path":109,"stem":110,"icon":111},"Deno","/deploy/runtimes/deno","2.deploy/10.runtimes/deno","simple-icons:deno",false,{"title":114,"path":115,"stem":116,"icon":117},"Custom Preset","/deploy/custom-presets","2.deploy/2.custom-presets","ri:file-code-line",{"title":119,"path":120,"stem":121,"children":122,"page":112},"Providers","/deploy/providers","2.deploy/20.providers",[123,127,131,135,139,143,147,151,155,159,163,167,171,175,179,183,187,191,195,199,203,207,211,215],{"title":124,"path":125,"stem":126},"Alwaysdata","/deploy/providers/alwaysdata","2.deploy/20.providers/alwaysdata",{"title":128,"path":129,"stem":130},"AWS Lambda","/deploy/providers/aws","2.deploy/20.providers/aws",{"title":132,"path":133,"stem":134},"AWS Amplify","/deploy/providers/aws-amplify","2.deploy/20.providers/aws-amplify",{"title":136,"path":137,"stem":138},"Azure","/deploy/providers/azure","2.deploy/20.providers/azure",{"title":140,"path":141,"stem":142},"Cleavr","/deploy/providers/cleavr","2.deploy/20.providers/cleavr",{"title":144,"path":145,"stem":146},"Cloudflare","/deploy/providers/cloudflare","2.deploy/20.providers/cloudflare",{"title":148,"path":149,"stem":150},"Deno Deploy","/deploy/providers/deno-deploy","2.deploy/20.providers/deno-deploy",{"title":152,"path":153,"stem":154},"DigitalOcean","/deploy/providers/digitalocean","2.deploy/20.providers/digitalocean",{"title":156,"path":157,"stem":158},"Edgio","/deploy/providers/edgio","2.deploy/20.providers/edgio",{"title":160,"path":161,"stem":162},"Firebase","/deploy/providers/firebase","2.deploy/20.providers/firebase",{"title":164,"path":165,"stem":166},"Flightcontrol","/deploy/providers/flightcontrol","2.deploy/20.providers/flightcontrol",{"title":168,"path":169,"stem":170},"Genezio","/deploy/providers/genezio","2.deploy/20.providers/genezio",{"title":172,"path":173,"stem":174},"GitHub Pages","/deploy/providers/github-pages","2.deploy/20.providers/github-pages",{"title":176,"path":177,"stem":178},"GitLab Pages","/deploy/providers/gitlab-pages","2.deploy/20.providers/gitlab-pages",{"title":180,"path":181,"stem":182},"Heroku","/deploy/providers/heroku","2.deploy/20.providers/heroku",{"title":184,"path":185,"stem":186},"IIS","/deploy/providers/iis","2.deploy/20.providers/iis",{"title":188,"path":189,"stem":190},"Koyeb","/deploy/providers/koyeb","2.deploy/20.providers/koyeb",{"title":192,"path":193,"stem":194},"Netlify","/deploy/providers/netlify","2.deploy/20.providers/netlify",{"title":196,"path":197,"stem":198},"Platform.sh","/deploy/providers/platform-sh","2.deploy/20.providers/platform-sh",{"title":200,"path":201,"stem":202},"Render.com","/deploy/providers/render","2.deploy/20.providers/render",{"title":204,"path":205,"stem":206},"StormKit","/deploy/providers/stormkit","2.deploy/20.providers/stormkit",{"title":208,"path":209,"stem":210},"Vercel","/deploy/providers/vercel","2.deploy/20.providers/vercel",{"title":212,"path":213,"stem":214},"Zeabur","/deploy/providers/zeabur","2.deploy/20.providers/zeabur",{"title":216,"path":217,"stem":218},"Zerops","/deploy/providers/zerops","2.deploy/20.providers/zerops",{"title":220,"path":221,"stem":222,"children":223,"icon":65},"Config","/config","3.config/0.index",[224],{"title":220,"path":221,"stem":222,"icon":65},{"id":226,"title":37,"body":227,"description":867,"extension":868,"meta":869,"navigation":870,"path":38,"seo":871,"stem":39,"__hash__":872},"content/1.guide/5.database.md",{"type":228,"value":229,"toc":862,"icon":40},"minimark",[230,252,262,272,277,282,294,297,407,411,643,646,653,849,858],[231,232,233,234,238,239,246,247,251],"p",{},"The default database connection is ",[235,236,237],"strong",{},"preconfigured"," with ",[240,241,245],"a",{"href":242,"rel":243},"https://db0.unjs.io/connectors/sqlite",[244],"nofollow","SQLite"," and works out of the box for development mode and any Node.js compatible production deployments. By default, data will be stored in ",[248,249,250],"code",{},".data/db.sqlite3",".",[253,254,255],"tip",{},[231,256,257,258,251],{},"\nYou can change default connection or define more connections to any of the ",[240,259,261],{"href":242,"rel":260},[244],"supported databases",[253,263,264],{},[231,265,266,267,251],{},"\nYou can integrate database instance to any of the ",[240,268,271],{"href":269,"rel":270},"https://db0.unjs.io/integrations",[244],"supported ORMs",[273,274],"read-more",{"title":275,"to":276},"DB0 Documentation","https://db0.unjs.io",[278,279,281],"h2",{"id":280},"opt-in-to-the-experimental-feature","Opt-in to the experimental feature",[283,284,285],"important",{},[231,286,287,288,293],{},"\nDatabase support is currently experimental.\nRefer to the ",[240,289,292],{"href":290,"rel":291},"https://github.com/unjs/db0/issues",[244],"db0 issues"," for status and bug report.",[231,295,296],{},"In order to enable database layer you need to enable experimental feature flag.",[298,299,300,358],"code-group",{},[301,302,308],"pre",{"className":303,"code":304,"filename":305,"language":306,"meta":307,"style":307},"language-ts shiki shiki-themes github-light github-dark github-dark","export default defineNitroConfig({\n  experimental: {\n    database: true\n  }\n})\n","nitro.config.ts","ts","",[248,309,310,330,336,346,352],{"__ignoreMap":307},[311,312,315,319,322,326],"span",{"class":313,"line":314},"line",1,[311,316,318],{"class":317},"so5gQ","export",[311,320,321],{"class":317}," default",[311,323,325],{"class":324},"shcOC"," defineNitroConfig",[311,327,329],{"class":328},"slsVL","({\n",[311,331,333],{"class":313,"line":332},2,[311,334,335],{"class":328},"  experimental: {\n",[311,337,339,342],{"class":313,"line":338},3,[311,340,341],{"class":328},"    database: ",[311,343,345],{"class":344},"suiK_","true\n",[311,347,349],{"class":313,"line":348},4,[311,350,351],{"class":328},"  }\n",[311,353,355],{"class":313,"line":354},5,[311,356,357],{"class":328},"})\n",[301,359,362],{"className":303,"code":360,"filename":361,"language":306,"meta":307,"style":307},"export default defineNuxtConfig({\n  nitro: {\n    experimental: {\n      database: true\n    }\n  }\n})\n","nuxt.config.ts",[248,363,364,375,380,385,392,397,402],{"__ignoreMap":307},[311,365,366,368,370,373],{"class":313,"line":314},[311,367,318],{"class":317},[311,369,321],{"class":317},[311,371,372],{"class":324}," defineNuxtConfig",[311,374,329],{"class":328},[311,376,377],{"class":313,"line":332},[311,378,379],{"class":328},"  nitro: {\n",[311,381,382],{"class":313,"line":338},[311,383,384],{"class":328},"    experimental: {\n",[311,386,387,390],{"class":313,"line":348},[311,388,389],{"class":328},"      database: ",[311,391,345],{"class":344},[311,393,394],{"class":313,"line":354},[311,395,396],{"class":328},"    }\n",[311,398,400],{"class":313,"line":399},6,[311,401,351],{"class":328},[311,403,405],{"class":313,"line":404},7,[311,406,357],{"class":328},[278,408,410],{"id":409},"usage","Usage",[301,412,415],{"className":303,"code":413,"filename":414,"language":306,"meta":307,"style":307},"export default defineEventHandler(async () => {\n  const db = useDatabase();\n\n  // Create users table\n  await db.sql`DROP TABLE IF EXISTS users`;\n  await db.sql`CREATE TABLE IF NOT EXISTS users (\"id\" TEXT PRIMARY KEY, \"firstName\" TEXT, \"lastName\" TEXT, \"email\" TEXT)`;\n\n  // Add a new user\n  const userId = String(Math.round(Math.random() * 10_000));\n  await db.sql`INSERT INTO users VALUES (${userId}, 'John', 'Doe', '')`;\n\n  // Query for users\n  const { rows } = await db.sql`SELECT * FROM users WHERE id = ${userId}`;\n\n  return {\n    rows,\n  };\n});\n","index.ts",[248,416,417,441,458,464,470,488,501,505,511,547,567,572,578,612,617,625,631,637],{"__ignoreMap":307},[311,418,419,421,423,426,429,432,435,438],{"class":313,"line":314},[311,420,318],{"class":317},[311,422,321],{"class":317},[311,424,425],{"class":324}," defineEventHandler",[311,427,428],{"class":328},"(",[311,430,431],{"class":317},"async",[311,433,434],{"class":328}," () ",[311,436,437],{"class":317},"=>",[311,439,440],{"class":328}," {\n",[311,442,443,446,449,452,455],{"class":313,"line":332},[311,444,445],{"class":317},"  const",[311,447,448],{"class":344}," db",[311,450,451],{"class":317}," =",[311,453,454],{"class":324}," useDatabase",[311,456,457],{"class":328},"();\n",[311,459,460],{"class":313,"line":338},[311,461,463],{"emptyLinePlaceholder":462},true,"\n",[311,465,466],{"class":313,"line":348},[311,467,469],{"class":468},"sCsY4","  // Create users table\n",[311,471,472,475,478,481,485],{"class":313,"line":354},[311,473,474],{"class":317},"  await",[311,476,477],{"class":328}," db.",[311,479,480],{"class":324},"sql",[311,482,484],{"class":483},"sfrk1","`DROP TABLE IF EXISTS users`",[311,486,487],{"class":328},";\n",[311,489,490,492,494,496,499],{"class":313,"line":399},[311,491,474],{"class":317},[311,493,477],{"class":328},[311,495,480],{"class":324},[311,497,498],{"class":483},"`CREATE TABLE IF NOT EXISTS users (\"id\" TEXT PRIMARY KEY, \"firstName\" TEXT, \"lastName\" TEXT, \"email\" TEXT)`",[311,500,487],{"class":328},[311,502,503],{"class":313,"line":404},[311,504,463],{"emptyLinePlaceholder":462},[311,506,508],{"class":313,"line":507},8,[311,509,510],{"class":468},"  // Add a new user\n",[311,512,514,516,519,521,524,527,530,532,535,538,541,544],{"class":313,"line":513},9,[311,515,445],{"class":317},[311,517,518],{"class":344}," userId",[311,520,451],{"class":317},[311,522,523],{"class":324}," String",[311,525,526],{"class":328},"(Math.",[311,528,529],{"class":324},"round",[311,531,526],{"class":328},[311,533,534],{"class":324},"random",[311,536,537],{"class":328},"() ",[311,539,540],{"class":317},"*",[311,542,543],{"class":344}," 10_000",[311,545,546],{"class":328},"));\n",[311,548,550,552,554,556,559,562,565],{"class":313,"line":549},10,[311,551,474],{"class":317},[311,553,477],{"class":328},[311,555,480],{"class":324},[311,557,558],{"class":483},"`INSERT INTO users VALUES (${",[311,560,561],{"class":328},"userId",[311,563,564],{"class":483},"}, 'John', 'Doe', '')`",[311,566,487],{"class":328},[311,568,570],{"class":313,"line":569},11,[311,571,463],{"emptyLinePlaceholder":462},[311,573,575],{"class":313,"line":574},12,[311,576,577],{"class":468},"  // Query for users\n",[311,579,581,583,586,589,592,595,598,600,602,605,607,610],{"class":313,"line":580},13,[311,582,445],{"class":317},[311,584,585],{"class":328}," { ",[311,587,588],{"class":344},"rows",[311,590,591],{"class":328}," } ",[311,593,594],{"class":317},"=",[311,596,597],{"class":317}," await",[311,599,477],{"class":328},[311,601,480],{"class":324},[311,603,604],{"class":483},"`SELECT * FROM users WHERE id = ${",[311,606,561],{"class":328},[311,608,609],{"class":483},"}`",[311,611,487],{"class":328},[311,613,615],{"class":313,"line":614},14,[311,616,463],{"emptyLinePlaceholder":462},[311,618,620,623],{"class":313,"line":619},15,[311,621,622],{"class":317},"  return",[311,624,440],{"class":328},[311,626,628],{"class":313,"line":627},16,[311,629,630],{"class":328},"    rows,\n",[311,632,634],{"class":313,"line":633},17,[311,635,636],{"class":328},"  };\n",[311,638,640],{"class":313,"line":639},18,[311,641,642],{"class":328},"});\n",[278,644,62],{"id":645},"configuration",[231,647,648,649,652],{},"You can configure database connections using ",[248,650,651],{},"database"," config:",[298,654,655,751],{},[301,656,658],{"className":303,"code":657,"filename":305,"language":306,"meta":307,"style":307},"export default defineNitroConfig({\n  database: {\n    default: {\n      connector: 'sqlite',\n      options: { name: 'db' }\n    },\n    users: {\n      connector: 'postgresql',\n      options: {\n        url: 'postgresql://username:password@hostname:port/database_name'\n      }\n    }\n  }\n})\n",[248,659,660,670,675,680,691,702,707,712,721,726,734,739,743,747],{"__ignoreMap":307},[311,661,662,664,666,668],{"class":313,"line":314},[311,663,318],{"class":317},[311,665,321],{"class":317},[311,667,325],{"class":324},[311,669,329],{"class":328},[311,671,672],{"class":313,"line":332},[311,673,674],{"class":328},"  database: {\n",[311,676,677],{"class":313,"line":338},[311,678,679],{"class":328},"    default: {\n",[311,681,682,685,688],{"class":313,"line":348},[311,683,684],{"class":328},"      connector: ",[311,686,687],{"class":483},"'sqlite'",[311,689,690],{"class":328},",\n",[311,692,693,696,699],{"class":313,"line":354},[311,694,695],{"class":328},"      options: { name: ",[311,697,698],{"class":483},"'db'",[311,700,701],{"class":328}," }\n",[311,703,704],{"class":313,"line":399},[311,705,706],{"class":328},"    },\n",[311,708,709],{"class":313,"line":404},[311,710,711],{"class":328},"    users: {\n",[311,713,714,716,719],{"class":313,"line":507},[311,715,684],{"class":328},[311,717,718],{"class":483},"'postgresql'",[311,720,690],{"class":328},[311,722,723],{"class":313,"line":513},[311,724,725],{"class":328},"      options: {\n",[311,727,728,731],{"class":313,"line":549},[311,729,730],{"class":328},"        url: ",[311,732,733],{"class":483},"'postgresql://username:password@hostname:port/database_name'\n",[311,735,736],{"class":313,"line":569},[311,737,738],{"class":328},"      }\n",[311,740,741],{"class":313,"line":574},[311,742,396],{"class":328},[311,744,745],{"class":313,"line":580},[311,746,351],{"class":328},[311,748,749],{"class":313,"line":614},[311,750,357],{"class":328},[301,752,754],{"className":303,"code":753,"filename":361,"language":306,"meta":307,"style":307},"export default defineNuxtConfig({\n  nitro: {\n    database: {\n      default: {\n        connector: 'sqlite',\n        options: { name: 'db' }\n      },\n      users: {\n        connector: 'postgresql',\n        options: {\n          url: 'postgresql://username:password@hostname:port/database_name'\n        }\n      }\n    }\n  }\n})\n",[248,755,756,766,770,775,780,789,798,803,808,816,821,828,833,837,841,845],{"__ignoreMap":307},[311,757,758,760,762,764],{"class":313,"line":314},[311,759,318],{"class":317},[311,761,321],{"class":317},[311,763,372],{"class":324},[311,765,329],{"class":328},[311,767,768],{"class":313,"line":332},[311,769,379],{"class":328},[311,771,772],{"class":313,"line":338},[311,773,774],{"class":328},"    database: {\n",[311,776,777],{"class":313,"line":348},[311,778,779],{"class":328},"      default: {\n",[311,781,782,785,787],{"class":313,"line":354},[311,783,784],{"class":328},"        connector: ",[311,786,687],{"class":483},[311,788,690],{"class":328},[311,790,791,794,796],{"class":313,"line":399},[311,792,793],{"class":328},"        options: { name: ",[311,795,698],{"class":483},[311,797,701],{"class":328},[311,799,800],{"class":313,"line":404},[311,801,802],{"class":328},"      },\n",[311,804,805],{"class":313,"line":507},[311,806,807],{"class":328},"      users: {\n",[311,809,810,812,814],{"class":313,"line":513},[311,811,784],{"class":328},[311,813,718],{"class":483},[311,815,690],{"class":328},[311,817,818],{"class":313,"line":549},[311,819,820],{"class":328},"        options: {\n",[311,822,823,826],{"class":313,"line":569},[311,824,825],{"class":328},"          url: ",[311,827,733],{"class":483},[311,829,830],{"class":313,"line":574},[311,831,832],{"class":328},"        }\n",[311,834,835],{"class":313,"line":580},[311,836,738],{"class":328},[311,838,839],{"class":313,"line":614},[311,840,396],{"class":328},[311,842,843],{"class":313,"line":619},[311,844,351],{"class":328},[311,846,847],{"class":313,"line":627},[311,848,357],{"class":328},[253,850,851],{},[231,852,853,854,857],{},"\nYou can use the ",[248,855,856],{},"devDatabase","  config to overwrite the database configuration only for development mode.",[859,860,861],"style",{},"html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}",{"title":307,"searchDepth":332,"depth":332,"links":863},[864,865,866],{"id":280,"depth":332,"text":281},{"id":409,"depth":332,"text":410},{"id":645,"depth":332,"text":62},"Nitro provides a built-in and lightweight SQL database layer.","md",{"automd":462,"icon":40},{"icon":40},{"title":37,"description":867},"gwRpL2Ef6MTLONnZGejcP87eZGERLA4_ibBxYqZcmmQ",[874,876],{"title":32,"path":33,"stem":34,"description":875,"icon":35,"children":-1},"Nitro provides a built-in storage layer that can abstract filesystem or database or any other data source.",{"title":42,"path":43,"stem":44,"description":877,"icon":45,"children":-1},"Nitro provides a caching system built on top of the storage layer.",1775117933480]