nodeJSのメモ帳です。
703 views
まずは、mongoDBのドキュメントを作成するサンプルコードを以下に記す。
const MongoClient = require("mongodb").MongoClient;
const url = "mongodb://localhost:27017/gate";
const dbName = "gate";
const connectOption = {
useNewUrlParser: true,
useUnifiedTopology: true,
}
//ユーザードキュメントを作成する
function createUserDoc() {
MongoClient.connect(url, connectOption, (error, client)=> {
if(error) {
console.log("createUserDoc DB 接続エラー");
}
else {
console.log("接続に成功しました");
let db = client.db(dbName);
db.createCollection("users", (error, collection)=>{
console.log(error);
client.close();
});
}
});
}
12行目でDBに接続する。
18行目でDBを取得して、19行目でコレクションを作成している。
このとき、21行目のようにDBを閉じたい場合は、createCollectionのコールバックの中で実行する必要がある。
下のコードの11行目のようにdb.createCollectionのコールバックを拾わずにcloseするとMongoError: Cannot use a session that has ended
というエラーが出力される。
これは、非同期プログラム固有のエラーで、createCollectionの実行が完了する前にDBを閉じてしまっているため発生する。
function createUserDoc() {
MongoClient.connect(url, connectOption, (error, client)=> {
if(error) {
console.log("createUserDoc DB 接続エラー");
}
else {
console.log("接続に成功しました");
let db = client.db(dbName);
db.createCollection("users");
}
client.close();
});
}
https://mongodb.github.io/node-mongodb-native/3.6/api/Db.html#~collectionResultCallback
を参考にする。
createCollectionの引数に指定するコールバック関数の定義はcollectionResultCallBack関数というもので、第一引数にerror、第二引数にcollectionを取る。
結構ドキュメントがしっかりしていて、助かる。
Page 9 of 13.
すぺぺぺ
本サイトの作成者。
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
ChatGPTで自動プログラム作成に取り組み中。
https://www.osumoi-stdio.com/novel/