Articles of sails.js

如何在Sails.js中gzip JavaScript和CSS资源?

我正尝试在Sails.js(Node)应用程序中为我的资产启用gzip压缩。 在生产环境中启动应用程序时, assets/linker/js和assets/linker/styles中的所有资源都被连接,缩小,成功地成功(在Gruntfile中指定)。 以下输出文件被生成: .tmp/ public/ min/ production.js production.css 我也想添加gzip压缩,因此我已经安装了grunt-contrib-compress并将压缩任务添加到Gruntfile中。 我可以通过成功压缩文件获得以下结果。 .tmp/ public/ min/ production.js production.js.gz production.css production.css.gz 我现在的问题是,服务器需要响应与gzip文件 (当客户端接受编码),而不是正常的,我找不到一个方法来做到这一点。 也许政策是这样做的风帆? 还是有另一种方式来使用快递中间件? 如果有帮助,这是当前的sails-linker任务,它将javascript production.js文件插入到标记中: … prodJs: { options: { startTag: '<!–SCRIPTS–>', endTag: '<!–SCRIPTS END–>', fileTmpl: '<script src="%s"></script>', appRoot: '.tmp/public' }, files: { '.tmp/public/**/*.html': ['.tmp/public/min/production.js'], 'views/**/*.html': ['.tmp/public/min/production.js'], 'views/**/*.ejs': ['.tmp/public/min/production.js'] } }, … 提前谢谢了。

sails.js – 如何在模型钩子beforeCreate中获取会话数据

我想更新模型的字段“所有者”。 所有者需要从包含当前login的用户并创build模型的会话中获取。 我想要这样的东西: Model = { attributes: { }, beforeCreate(values,next) { var owner_user_id = req.session.user_id; values.owner = owner_user_id; next(); } }

如何在sails.js 0.10中接收套接字事件?

我有一个名为Collection.js的模型,它看起来像这样: module.exports = { attributes: { title: { type: 'string', required: true }, description: { type: 'text', required: false }, sessions: { collection: 'session', via: 'collection' } } } 据我所知,这个消息是在创build新模型实例时通过套接字发送的,可以通过模型名称获得。 所以我已经在我的app.coffee文件中进行了app.coffee : socket = io.connect() socket.on 'collection', -> console.log 'hey' 我已经validation了“环境”的作用,因为我得到了socket.on 'connect'. -> console.log 'hey'通知socket.on 'connect'. -> console.log 'hey' socket.on 'connect'. -> console.log 'hey' ,但我没有得到任何模型事件,如创build或破坏logging! […]

一个迁移文件中有多个迁移语句

我试图在一个迁移文件中执行多个迁移语句,以便一次性更改同一个表的多个列。 我想知道我是否以写作的方式去做,还是有更好更合适的方法去做: 迁移代码 module.exports = { up: function(queryInterface, Sequelize, done) { queryInterface.changeColumn('users', 'name', { type: Sequelize.STRING, allowNull: false, require: true, unique: true }).success(function() { queryInterface.changeColumn('users', 'address', { type: Sequelize.STRING, allowNull: false, require: true, unique: true }).success(function() { queryInterface.changeColumn('users', 'city', { type: Sequelize.STRING, allowNull: false, require: true, unique: true }).success(function() { queryInterface.changeColumn('users', 'state', { type: Sequelize.STRING, […]

Sails.js:如何在bootstrap中使用i18n

如何在Sails.js的bootstrap中使用i18n? 这里是控制器动作中的“res.i18n”,但是我没有find像sails.i18n这样的全局实例(已经初始化)。 我猜下面的代码应该在bootstrap.js中工作: i18n = require('i18n'), i18n.configure({ locales: sails.config.i18n.locales, directory: sails.config.appPath + sails.config.i18n.localesDirectory, defaultLocale: sails.config.i18n.defaultLocale, updateFiles: false, extension: '.json' }); __('Hello'); 但是可能有更好的办法吗?

节点js删除目录中的旧文件

我想删除一些目录中的文件达到一定的限制(例如,如果文件数量超过20删除文件) 如果可以执行任何自动化操作来删除这些文件,那就太好了。 详细:在我的情况下,有一个上传目录,我上传的图像。 对于每个新图像,都会创build一个目录,并将图像保存在目录中。 所以我想保留一些新创build或最近使用的目录,并在一定的限制之后删除其他目录(例如达到20个目录之后)。 在创build新图像时,它会检查限制,如果超出最大限制,它将删除未使用的目录。 注意:目录不是空的。 我怎样才能做到这一点使用Node.js 任何帮助将是可观的。

如果属性已定义,则从“水线”中的模型获取结果

我有一个不需要每个属性的模型。 我想要查询模型并返回属性定义的所有实例。 这是我认为代码应该看起来像,但它不起作用。 任何想法或链接到一些详细的文档? MyModel.find() .where({ "propertyThatMayExist" : { "!=" : undefined } }); 预先感谢一堆!

大多数中间件(如compress)不再与Express捆绑在一起

我刚刚安装了sails@v0.9.16,express@4.0.0,compression@1.0.1和compress@0.1.9(只是为了确保)。 但是我在sails lift时仍然有下面的错误 /Users/myuser/myproject/backend/node_modules/express/lib/express.js:89 throw new Error('Most middleware (like ' + name + ') is no longer bundle ^ Error: Most middleware (like compress) is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware. at Function.Object.defineProperty.get (/Users/myuser/myproject/backend/node_modules/express/lib/express.js:89:13) at Object.module.exports.express.customMiddleware (/Users/myuser/myproject/backend/config/passport.js:127:20) at Array.loadExpress [as 1] (/usr/local/lib/node_modules/sails/lib/express/index.js:162:25) at listener (/usr/local/lib/node_modules/sails/node_modules/async/lib/async.js:462:46) at /usr/local/lib/node_modules/sails/node_modules/async/lib/async.js:416:17 at […]

sails.js资产版本控制

我正在使用sails.js资产链接器。 我正在通过在其中附加一个资产版本来版本化我的资产,如下所示: assetfile.js?=<%= assetVersion %> 不幸的是,这是行不通的,因为js文件名正在被链接器取代! sails.js链接器是否支持这个工作? 还是我自己离开了咕噜文件?

在第一次解除Sails.js应用程序时加载数据(灯具)

我正在使用Sails.js 0.10 RC7。 当开发人员签出一个项目并运行它时,我想预先填充一些数据到数据库中。 这应该只在应用程序运行的第一次完成(或者,也许我们应该有新的数据添加到夹具时发生这种情况)。 我可以把数据放在config/bootstrap.js但据我了解,每次运行sails lift都会运行。 我可以这么做,写一些逻辑,但是如果已经有一个关于这个的惯例,那么使用它会很好。 只是要清楚,我并不是专指testing设备,而是假定在任何运行环境中都可以使用的一些数据。 任何人已经解决这个问题?