🐥
DenoでArangoDBにアクセスしてみた(darango)
Tnifey/arangoを使ったサンプルはこちら
DenoでArangoDBにアクセス
Denoのハンズオンに参加してみてDeno触ってみるついでにArangoDBにアクセスできるか試しました
darangoがあった
ぐぐったらあったので使ってみた
サンプル
darango.ts
import { Arango } from "https://deno.land/x/darango/mod.ts";
// Connect and obtain a JWT token from the server by providing basic auth details.
const arango = await Arango.basicAuth({
uri: "http://localhost:8529/_db/_system",
username: "ユーザーID",
password: "パスワード",
});
// aqlでデータ作って取得する
async function sample1() {
try {
// forでデータを5件返すAQL
const payload = 5;
const cursor = await arango.query<any>(`
let nums = ${payload}
for i in 1..nums // [1,2,3,4,5]
return i + 1
`, { batchSize: 2 });
for await (const d of cursor) {
// バッチサイズが2なので2件取得される
console.log({
cursor: d,
});
}
}
catch (error) {
console.log(error);
}
}
// Collectionから取得する
async function sample2() {
try {
// Charactersからデータを取得するAQL
const cursor = await arango.query<any>(`
for u in Characters
return u
`, { batchSize: 5 });
// バッチサイズが5なので5件取得される
for await (const d of cursor) {
// バッチサイズが2なので2件取得される
console.log({
cursor: d,
});
// nextとかないので今の所一回取得はbreakするしかなさそう
break;
}
}
catch (error) {
console.log(error);
}
}
await sample1();
await sample2();
結果
PS E:\DockerProject\arangodb\denosample> deno run --allow-net darango.ts
Check file:///E:/DockerProject/arangodb/denosample/darango.ts
{ cursor: [ 2, 3 ] }
{ cursor: [ 4, 5 ] }
{ cursor: [ 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