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

mongoose-schema-lastmodifiedfields

v0.2.1

Published

mongoose schema plugin to create last modified fields for each field and update them automatically

Downloads

9

Readme

mongoose-schema-lastmodifiedfields

A mongoose plugin that automatically adds last modified fields for each user defined property in a mongoose schema. Each time a document is saved, any modified properties that have corresponding last modified fields will be updated with the current timestamp. This can be useful when syncing data with clients on a per-field basis.

The inspiration for this was a result to extend my mongoose schemas to support real-time and per field data syncing discussed in @brentsimmons post about Vesper syncing here

#Install Install via NPM

    npm install mongoose-schema-lastmodifiedfields

Usage

var mongoose = require('mongoose'),
    lastModifiedFields = require('lastModifiedFields');

var CarSchema = new mongoose.Schema({
    make:String,
    model:String,
    vin:String
    miles:Number
});

var options = {
    fieldSuffix: '_lastModified',
    omittedFields: ['make', 'model']
};

CarSchema.plugin(lastModifiedFields, options);

###Options The plugin currently has the following options

  • ####fieldSuffix A string to append to the end of each path to determine the name of each timestamp field. Defaults to '_lastModifiedDate'

  • ####omittedFields An array of field names that should not have timestamp fields created for them. Defaults:

    • Standard id key '_id'
    • Discriminator Key (typically '__t')
    • Version key (typically '__v')
  • ####purgeFromJSON Boolean that transforms the schema's toJSON method to remove the timestamp fields from its JSON representation. Defaults to 'false'

  • ####purgeFromObject Boolean that transforms the schema's toObject method to remove the timestamp fields from its Object representation. Defaults to 'false'

  • ####overwrite Boolean to determine whether the plugin should overwrite _lastModifiedDate fields, even if they were explicitly modified. Defaults to 'true' Note: Dates are treated a little differently in mongoose. To be included in schema.modifiedPaths(), the date must either be set via doc.set(...) or marked explicitly with doc.markmodified(...). A simple assignment does not flag a date as modified. For more information, see http://mongoosejs.com/docs/schematypes.html#Dates.

  • ####select Boolean to determine whether the plugin should return _lastModifiedDate fields from a database query by default. This can be overridden on a per-query basis. There is no Default value. For more information, see http://mongoosejs.com/docs/api.html#schematype_SchemaType-select.

###Methods The modifedFieldSuffix is exposed by a convenience method on the schema for easy access via getModifiedFieldSuffix.

The array of paths to which modifedFieldSuffix has been added is exposed by via getModifiedFieldPaths.

var Car = mongoose.model('Car', CarSchema);
var modifiedFieldSuffix = Car.getModifiedFieldSuffix();
var modifiedFieldPaths = Car.getModifiedFieldPaths();

Tests

Test can be run by simply running npm test or by installing and running mocha.

npm test

or:

npm install -g mocha
mocha

#Authors Mike Sabatini @mikesabatini

#License Copyright Mike Sabatini 2014 Licensed under the MIT License. Enjoy!