0.3.0 • Published 7 years ago

sequelize-file v0.3.0

Weekly downloads
23
License
ISC
Repository
github
Last release
7 years ago

Sequelize File

Travis npm

This package allows you to attach files to your sequelize instances as easy as you set your plain attributes and define MIME type validation and post-processing rules next to your models.

Requirements

Usage

First, you define which fileds you want to enhance with attachments logic:

/* models/attachments.js */

import SequelizeFile from 'sequelize-file';

export const picture = SequelizeFile({
   attribute: 'picture',
   mimetype: /^image/,
   crop: true,
   sizes: {
     small: 64, //width 64
     big: 150, //width 150
   }
});

export const backgroundImage = SequelizeFile({
  attribute: 'backgroundImage',
  mimetype: /^image/,
  crop: true,
  sizes: {
    preview: "x350" // height 350
  }
});

Then, you attach enhanced attributes to your model:

/* models/User.js */

import sequelize from './db';
import { STRING } from 'sequelize';
import { picture, backgroundImage } from './attachments';

let User = sequelize.define('user', {
  name: STRING,
  /* And all of your plain sequelize attributes... */
});

picture.addTo(User);
backgroundImage.addTo(User);

export default User;

After this, you'll be able to set files just as ordinary sequelize attributes. You can attach files either as urls (they will be downloaded), or as pre-downloaded multer-style objects (basically, only path and mimetype props are required)

sequelize.sync({ force: true }).then(() => {

  // If you set url, file will be downloaded and saved
  let user1 = User.build({
    picture: "http://example.com/somepic.jpg"
  });

  user1.save();

  // Or you can pass multer-style File object, for example
  let user2 = User.build({
    picture: "http://example.com/somepic2.jpg",
    backgroundImage: {
      path: '/uploads/tmp/somepic.jpg',
      mimetype: 'image/jpeg'
    }
  });

  user2.save()

  // Deleting file(s)
  user2.update({ picture: null });

});

You access all of your resized images through dot notation. If you didn't setup resizing, you'll get a string path to attached file.

User.findById(1)
.then(user => {
  console.log(user.picture.small);
  console.log(user.picture.big);
  console.log(user.picture.original);
});

Status

This package is under early development. Do use it with caution! Check out tests to see what is currently working.

0.3.0

7 years ago

0.2.0

7 years ago

0.1.7

7 years ago

0.1.6

7 years ago

0.1.5

8 years ago

0.1.4

8 years ago

0.1.3

8 years ago

0.1.2

8 years ago

0.1.1

8 years ago

0.1.0

8 years ago

0.0.3

8 years ago

0.0.2

8 years ago

0.0.1

8 years ago

0.0.0

8 years ago