Spec-Zone.ru › Deno 2

Как использовать Planetscale с Deno

Planetscale — это серверless база данных, совместимая с MySQL, разработанная для работы с разработчиками, которые могут создавать, ветвить и развертывать базы данных из командной строки.

Посмотреть исходный код здесь.

Мы будем использовать драйвер серверless Planetscale, @planetscale/database, для работы с Deno. Сначала мы хотим создать main.ts и импортировать метод подключения из этого пакета:

import { connect } from "npm:@planetscale/database@^1.4";

Настройка подключения

Для подключения требуются три учетные данные: хост, имя пользователя и пароль. Они специфичны для базы данных, поэтому сначала необходимо создать базу данных в Planetscale. Вы можете сделать это, следуя начальным инструкциям здесь. Не беспокойтесь о добавлении схемы — мы можем сделать это через @planetscale/database.

После создания базы данных перейдите в раздел "Обзор", нажмите "Подключиться" и выберите "Подключиться с @planetscale/database", чтобы получить хост и имя пользователя. Затем перейдите к паролям, чтобы создать новый пароль для вашей базы данных. После того, как у вас есть все три, вы можете вставить их напрямую или, что лучше, сохранить как переменные среды:

export HOST=<host>
export USERNAME=<username>
export PASSWORD=<password>

Затем вызовите их, используя Deno.env:

const config = {
  host: Deno.env.get("HOST"),
  username: Deno.env.get("USERNAME"),
  password: Deno.env.get("PASSWORD"),
};

const conn = connect(config);

Это также будет работать в Deno Deploy, если вы установите переменные среды на панели управления. Запустите с:

deno run --allow-net --allow-env main.ts

Объект conn теперь представляет открытое соединение с нашей базой данных Planetscale.

Создание и заполнение таблицы базы данных

Теперь, когда у вас есть работающее соединение, вы можете conn.execute() с помощью команд SQL для создания таблиц и вставки начальных данных:

await conn.execute(
  "CREATE TABLE dinosaurs (id int NOT NULL AUTO_INCREMENT PRIMARY KEY, name varchar(255) NOT NULL, description varchar(255) NOT NULL);",
);
await conn.execute(
  "INSERT INTO `dinosaurs` (id, name, description) VALUES (1, 'Aardonyx', 'An early stage in the evolution of sauropods.'), (2, 'Abelisaurus', 'Abels lizard has been reconstructed from a single skull.'), (3, 'Deno', 'The fastest dinosaur that ever lived.')",
);

Запросы к Planetscale

Мы можем использовать те же conn.execute() для написания запросов. Давайте получим список всех наших динозавров:

const results = await conn.execute("SELECT * FROM `dinosaurs`");
console.log(results.rows);

Результат:

[
  {
    id: 1,
    name: "Aardonyx",
    description: "An early stage in the evolution of sauropods.",
  },
  {
    id: 2,
    name: "Abelisaurus",
    description: "Abels lizard has been reconstructed from a single skull.",
  },
  { id: 3, name: "Deno", description: "The fastest dinosaur that ever lived." },
];

Мы также можем получить только одну строку из базы данных, указав имя динозавра:

const result = await conn.execute(
  "SELECT * FROM `dinosaurs` WHERE `name` = 'Deno'",
);
console.log(result.rows);

Что даёт нам результат в виде одной строки:

[{ id: 3, name: "Deno", description: "The fastest dinosaur that ever lived." }];

Дополнительную информацию о работе с Planetscale можно найти в их документации.

© 2018–2024 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/tutorials/how_to_with_npm/planetscale

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API