😽
DenoでArangoDBにアクセスしてみた(Tnifey/arango)
darangoを使ったサンプルはこちら
DenoでArangoDBにアクセス
Denoのハンズオンに参加してみてDeno触ってみるついでにArangoDBにアクセスできるか試しました
Tnifey/arangoがあった
ぐぐったらあったので使ってみた
サンプル
Tnifey.ts
import {
aql,
Database,
} from "https://github.com/Tnifey/arango/raw/main/mod.ts";
// ArangoDBに接続する
const db = new Database({
url: "http://localhost:8529/", // ArangoDBの場所を指定
auth: { username: "ユーザーID", password: "パスワード" }, // 認証用のUserIDとPasswordを指定
name: "_system", // データベース名を指定
});
// Alternative:
// const pool = arango({
// url: "http://localhost:8529/",
// auth: { username: "root" },
// });
// const db = pool.database('_system');
// aqlでデータ作って取得する
async function sample1() {
// forでデータを5件返すAQL
const payload = 5;
const query = aql`
let nums = ${payload}
for i in 1..nums // [1,2,3,4,5]
return i + 1
`;
try {
// AQLを流す(バッチサイズ2なので2件づつとってくる)
const cursor = await db.query(query, { batchSize: 2 });
// バッチサイズが2なので2件取得される
console.log({
cursor: await cursor.all(),
});
// 次のデータを取得
let more = await cursor.nextBatch();
// データが取れなくなるまで
while(more) {
// 出力
console.log({
more: await more?.all(),
});
// 次のデータを取得
more = await cursor.nextBatch();
}
}
catch (error) {
console.log(error);
}
}
// Collectionから取得する
async function sample2() {
// Charactersからデータを取得するAQL
const query = aql`
for u in Characters
return u
`;
try {
// AQLを流す(バッチサイズ5なので5件づつとってくる)
const cursor = await db.query(query, { batchSize: 5 });
// バッチサイズが5なので5件取得される
console.log({
cursor: await cursor.all(),
});
} catch(error) {
console.log(error);
}
}
await sample1();
await sample2();
結果
deno run --allow-net Tnifey.ts
Check file:///E:/DockerProject/arangodb/denosample/main.ts
{ cursor: [ 2, 3 ] }
{ more: [ 4, 5 ] }
{ more: [ 6 ] }
{
cursor: [
{
_key: "112602",
_id: "Characters/112602",
_rev: "_dBBNWXq---",
name: "Ned",
surname: "Stark",
alive: true,
age: 41,
traits: [ "A", "H", "C", "N", "P" ]
},
{
_key: "112603",
_id: "Characters/112603",
_rev: "_dBBNWXq--_",
name: "Robert",
surname: "Baratheon",
alive: false,
traits: [ "A", "H", "C" ]
},
{
_key: "112604",
_id: "Characters/112604",
_rev: "_dBBNWXq--A",
name: "Jaime",
surname: "Lannister",
alive: true,
age: 36,
traits: [ "A", "F", "B" ]
},
{
_key: "112605",
_id: "Characters/112605",
_rev: "_dBBNWXq--B",
name: "Catelyn",
surname: "Stark",
alive: false,
age: 40,
traits: [ "D", "H", "C" ]
},
{
_key: "112606",
_id: "Characters/112606",
_rev: "_dBBNWXq--C",
name: "Cersei",
surname: "Lannister",
alive: true,
age: 36,
traits: [ "H", "E", "F" ]
}
]
}
Discussion