mongodb/nodejs/linux/cosmoslib.js (56 lines of code) (raw):

const _ = require("lodash"); const MongoClient = require("mongodb").MongoClient; const ObjectId = require("mongodb").ObjectId; const connectionString = process.env.COSMOSDB_CONNECTION_STRING; let databaseId = process.env.COSMOS_DATABASE || "notes"; const client = new MongoClient(connectionString, { tlsAllowInvalidCertificates: true, }); async function init() { try { await client.connect(); const database = client.db(databaseId); const collection = database.collection(databaseId); } catch (err) { console.log(err); } } async function getNotes() { const database = client.db(databaseId); const collection = database.collection(databaseId); const resources = await collection.find({}).toArray(); let resp = _.map(resources, _.partialRight(_.pick, ["_id", "content"])); return resp; } async function writeNote(note) { const database = client.db(databaseId); const collection = database.collection(databaseId); const itemDef = { _id: note._id, content: note.content, }; await collection.insertOne(itemDef); } async function deleteNote(id) { const database = client.db(databaseId); const collection = database.collection(databaseId); const res = await collection.deleteOne({ _id: new ObjectId(id) }); if (res.deletedCount === 0) { throw new Error("No such note exists"); } else { return { statusCode: 202 }; } } async function readById(id) { const database = client.db(databaseId); const collection = database.collection(databaseId); const res = await collection.findOne({ "_id": new ObjectId(id) }); if (!res) { return { statusCode: 404, content: {} } } else { return { statusCode: 200, content: res } } } module.exports = { init, getNotes, writeNote, deleteNote, readById };