npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@jaypie/mongoose

v1.0.7

Published

MongoDB management for Jaypie

Downloads

425

Readme

Jaypie Mongoose 🐦‍⬛🪿

MongoDB management for Jaypie

🐦‍⬛ Introduction

Jaypie is an opinionated approach to application development centered around JavaScript and the JSON:API specification in an event-driven architecture.

📋 Usage

@jaypie/mongoose is an optional package that should be installed alongside the main jaypie package.

Installation

npm install jaypie @jaypie/mongoose

Example

import { connectFromSecretEnv, disconnect, jaypieHandler, mongoose } from "jaypie";

export default jaypieHandler(
  // Handler function
  async (...args) => {

    // "Your Code Here"
    // Do something with `mongoose`?

    return json;
  },
  // Configuration (optional)
  {
    name: "myEventHandler",
    setup: [connectFromSecretEnv], // Array of setup functions
    teardown: [disconnect], // Array of teardown functions
  },
);

Example Caveats

  • SECRET_MONGODB_URI environment variable containing AWS secret name and associated permissions described in connectFromSecretEnv prerequisites (below)
  • Use expressHandler or lambdaHandler, not jaypieHandler directly

📖 Reference

const {
  connectFromSecretEnv,
  disconnect,
  mongoose,
} = require("@jaypie/mongoose");

connectFromSecretEnv

import { jaypieHandler } from "@jaypie/core";
import { connectFromSecretEnv } from "@jaypie/mongoose";

export default jaypieHandler(
  // Handler function
  async (...args) => {

    // "Your Code Here"
    // Do something with `mongoose`?
    // Don't forget to `mongoose.disconnect()` or better yet, pass `disconnect` to `teardown`

    return json;
  },
  // Configuration (optional)
  {
    name: "myEventHandler",
    setup: [connectFromSecretEnv],
  },
);

// This is a theoretical example. In practice you would use this as a handler lifecycle function
const mongoose = await connectFromSecretEnv();

Prerequisites

  • An AWS secret. Ths can be deployed by CDK with new secretsManager.Secret
  • The lambda function must have access to the secret. CDK mongoConnectionString.grantRead(expressLambda);
  • The AWS lambda params and secrets layer. CDK lambda.ParamsAndSecretsLayerVersion.fromVersion
  • The lambda function must have access to the secrets layer. CDK paramsAndSecrets: paramsAndSecretsLayer,
  • The name of secret. Usually it is ugly like MongoConnectionString37D5BF-XUCja0vKbFwa. CDK mongoConnectionString.secretName
  • This name stored in an environment variable, preferably SECRET_MONGODB_URI. CDK SECRET_MONGODB_URI: mongoConnectionString.secretName, in the lambda environment property

If this sounds like a lot to think about think about never thinking about it again 👺

disconnect

What it says on the tin. Literally:

return await mongoose.disconnect();

mongoose

The mongoose object

import { mongoose } from "@jaypie/mongoose";

// Honk!

📝 Changelog

| Date | Version | Summary | | ---------- | ------- | -------------- | | 3/19/2024 | 1.0.0 | First publish with @jaypie/[email protected] | | 3/14/2024 | 0.1.0 | Initial deploy | | 3/13/2024 | 0.0.1 | Initial commit |

📜 License

Published by Finlayson Studio. All rights reserved