小编dsc*_*ger的帖子

如何在Sequelize中的setterMethod之前运行模型验证?

我想保存一个哈希密码.我正在使用setterMethod:

module.exports = (sequelize, DataTypes) ->
  sequelize.define 'User',
    # other model fields [...]
    password:
      type: DataTypes.STRING
      validate: notEmpty: msg: 'You need to set a password.'
      set: (pw) ->
        salt = bcrypt.genSaltSync(10)
        hash = bcrypt.hashSync(pw, salt)
        @setDataValue('password', hash)
Run Code Online (Sandbox Code Playgroud)

setter首先运行.空字符串密码('')被散列为非空字符串(例如$2a$10$pDDIGnV.r47i9YOv0Fls/euQ0yYvfyq8T1SyP9VRQsTUAqptNmxXO).

验证器验证后,密码不再为空.

如何在setter之前验证密码?

我调查了钩子,但他们也没有提到制定者.

我正在使用sequelize@2.1.3.

javascript coffeescript sequelize.js

6
推荐指数
1
解决办法
548
查看次数

Backbone Marionette和RequireJS Modules Confusion - 模块似乎未定义

我刚刚用木偶开始,我阅读并沿以下木偶-一个温和的介绍大卫Sulc.这是一个非常好的阅读,并且很容易跟随构建示例应用程序Contact Manager协同存储库.

但是,我之前使用RequireJS建立了一个项目,并希望将该书的想法和概念翻译并整合到该项目中.我实际上并没有那么远,我想我可能会对使用Marionette模块与导致undefined对象的AMD模块有点混淆.

更具体地讲,让我清单app.js,listView.jslistController.js应是本作的RequireJS版本提交样品回购.

app.js

/*global define*/
define([
    'marionette'
], function ( Marionette ) {
    'use strict';

    var ContactManager = new Marionette.Application();

    ContactManager.addRegions({
        mainRegion : '#main-region'
    });

    ContactManager.on( 'initialize:after', function() {

        ContactManager.ContactsApp.List.Controller.listContacts();
    });

    return ContactManager;
});
Run Code Online (Sandbox Code Playgroud)

listView.js

/*global define*/
define([
    'app',
    'marionette',
    'handlebars',
    'text!templates/contact.hbs'
], function ( ContactManager, Marionette, Handlebars, contactTemplate ) {
    'use strict';

    var List = ContactManager.module( 'ContactsApp.List' );

    List.Contact …
Run Code Online (Sandbox Code Playgroud)

javascript requirejs backbone.js marionette

5
推荐指数
1
解决办法
4198
查看次数

控制台访问 Dokku 的 PostgreSQL 插件?

有没有办法让控制台访问DokkuPostgreSQL 插件?在 Heroku 上,我会这样做heroku pg:psql。这在 Dokku 环境中是否可行,如果可以,如何实现?

postgresql dokku

5
推荐指数
1
解决办法
1334
查看次数

如何使用 Multer 验证 Express 中上传的文件大小?

我在Express中使用Multer作为multipart/form-data中间件。我想知道如何验证上传文件的大小,最好是在上传文件时验证。

我知道您可以limits在实例化 Multer 时在选项对象中进行设置,如下所示:

app.use multer
  limits:
    fileSize: 1024 * 1024
Run Code Online (Sandbox Code Playgroud)

但是,这只会截断上传的文件,并且不允许显示“文件太大”之类的错误消息。当文件大小超过限制时。

我还检查了onFileUploadData(file, data)您可以访问file对象和data缓冲区的事件处理程序。在这里我可以通过检查来检查当前文件大小data.length。不过,我不清楚如何处理大于data.length我允许的最大上传文件大小的情况。

最终,我的想法是,当 Multer 解析请求并且上传的文件太大时,我想向用户显示一条闪存消息并重定向到表单,以便她可以尝试较小的文件。我的控制器的动作create看起来像这样:

exports.create = (req, res) ->
  Record.create(req.body)
  .success (record) ->
    image = req.files.image
    uploadImage(image, record.id).then ->
      req.flash 'success', 'Record created.'
      res.redirect "/records/#{record.id}"
  .error (err) ->
    req.flash 'error', err
    res.redirect 'records/new' 
Run Code Online (Sandbox Code Playgroud)

问题是req.files.image此时已经上传到系统 tmp 文件夹的已解析图像。因此,即使在这里检查文件大小也无法真正让我防止不需要的大文件上传。

一般来说,使用 Multer 或其他表单解析中间件在 Express 中处理文件上传验证的最佳方法是什么?

javascript file-upload node.js coffeescript express

4
推荐指数
1
解决办法
1万
查看次数