Never Pay your Mortgage

    mongoose-voting

    0.3.0 • Public • Published

    mongoose-voting

    Mongoose plugin to upvote/downvote stuff. Extends any model with handy methods for voting.

    Build Status

    Install

      $ npm install mongoose-voting
    

    Usage example

      var CommentSchema = new Schema({..});
     
      // Default voter is `User` model
      CommentSchema.plugin(voting);
     
      // Or you can tell `mongoose-voting`
      // which model references
      CommentSchema.plugin(voting, { ref: 'Author' });
     
      // ...
     
      var author = new Author({});
      var comment = new Comment({});
     
      // upvote and check
      comment.upvote(author);
      comment.upvoted(author);      // true
      comment.downvoted(author);    // false
     
      // downvote with save
      comment.downvote(author, function(err, doc) {
        assert.equal(doc, comment);  // true
        doc.downvoted(author);      // true
      });
     
      comment.voted(author);        // true

    API

    .upvote(user)

    Upvotes document by user. user can be either a model instance (like User), an ObjectId or even the hex string from ObjectId.

      comment.upvote(author);
      comment.voted(author);    // true
      comment.upvoted(author);  // true

    .upvote(user, fn)

    Same as .upvote(user) but calls save on model with fn function as callback.

      comment.upvote(author, function(err, doc) {
        doc.voted(author);    // true
        doc.upvoted(author);  // true
      });

    .downvote(user)

    Downvotes document by user. user can be either a model instance (like User), an ObjectId or even the hex string from ObjectId.

      comment.upvote(author);
      comment.voted(author);    // true
      comment.upvoted(author);  // true

    .downvote(user, fn)

    Same as .downvote(user) but calls save on model with fn function as callback.

      comment.downvote(author, function(err, doc) {
        doc.voted(author);      // true
        doc.downvoted(author);  // true
      });

    .unvote(user)

    Cancels any vote cast by user. user can be either a model instance (like User), an ObjectId or even the hex string from ObjectId.

      comment.upvote(author);
      comment.voted(author);    // true
      comment.unvote(author);
      comment.voted(author);    // false

    .unvote(user, fn)

    Same as .unvote(user) but calls save on model with fn function as callback.

      comment.upvote(author);
      comment.voted(author);    // true
      comment.unvote(author);
      comment.voted(author);    // false

    .upvoted(user)

    Returns true if document was 'upvoted' by user. false otherwise.

      comment.upvote(user);
      comment.upvoted(user);    // true
      comment.downvoted(user);  // false

    .downvoted(user)

    Returns true if document was 'downvoted' by user. false otherwise.

      comment.downvote(user);
      comment.upvoted(user);    // false
      comment.downvoted(user);  // true

    .voted(user)

    Returns true if document was 'upvoted' or 'downvoted' by user. false otherwise.

      comment.downvote(user);
      comment.voted(user);    // true
      comment.upvote(user);
      comment.voted(user);    // true

    .upvotes()

    Returns Number of upvotes count.

      comment.downvote(user);
      comment.upvotes();      // 0
      comment.upvote(user);
      comment.upvotes();      // 1

    .downvotes()

    Returns Number of downvotes count.

      comment.downvote(user);
      comment.upvotes();      // 1
      comment.upvote(user);
      comment.upvotes();      // 0

    .votes()

    Returns Number of votes count.

      comment.downvote(user);
      comment.votes();          // 1
      comment.upvote(user);
      comment.votes();          // 1
      comment.downvote(user2);
      comment.votes();          // 2

    Test

      $ npm install --dev
      $ make test
    

    License

    MIT

    Install

    npm i mongoose-voting

    DownloadsWeekly Downloads

    8

    Version

    0.3.0

    License

    MIT

    Last publish

    Collaborators

    • cristiandouce