moleculer-db-adapter-cosmos
Warning: This DB adapter is not stable and it does not contain any Request Units optimizations. Use it at your own risk.
CosmosDB SQL native adapter for Moleculer DB service.
Install
$ npm install moleculer-db moleculer-db-adapter-cosmos --save
Usage
const { ServiceBroker } = require("moleculer");
const DbService = require("moleculer-db");
const CosmosDbAdapter = require("moleculer-db-adapter-cosmos");
const { default: cosmosServer } = require("@zeit/cosmosdb-server");
const https = require("https");
const connection = {
endpoint: `https://localhost:3000`,
key: "dummy key",
agent: https.Agent({ rejectUnauthorized: false })
};
const dbName = "sample_database";
const containerName = "sample_collection";
let broker = new ServiceBroker({
logger: console,
logLevel: "debug"
});
broker.createService({
name: "store",
mixins: [DbService],
adapter: new CosmosDbAdapter(connection, dbName, containerName),
async afterConnected() {
this.broker.logger.info("Connection Established");
}
});
cosmosServer().listen(3000, () => {
broker.start().then(async () => {
const documentDefinition = {
id: "hello world doc",
content: "Hello World!"
};
let item = await broker.call("store.create", documentDefinition);
broker.logger.info(`Item Created`);
broker.logger.info(item);
let result = await broker.call("store.find");
broker.logger.info(`Items in DB`);
broker.logger.info(result);
let count = await broker.call("store.count");
broker.logger.info(`Number of Items in DB`);
broker.logger.info(count);
broker.logger.info(`Removing an Item`);
await broker.call("store.remove", { id: documentDefinition.id });
count = await broker.call("store.count");
broker.logger.info(`Number of Items in DB`);
broker.logger.info(count);
});
});
Test
$ npm test
In development with watching
$ npm run ci
License
The project is available under the MIT license.
Contact
Copyright (c) 2019 André Mazayev