奇怪谷歌没有任何关于此的信息......
我想在即将推出的项目中使用aws lambda。我想用sails.js构建它。我知道有aws-serverless-express允许在lambda上运行express应用程序。这也适用于帆还是不起作用?
答案 0 :(得分:0)
我正在使用sails.js,但是我不会将它放入Lambda函数中,因为它太胖了,需要几秒钟才能启动,这与Lambda函数的使用情况有关。当然,我知道在Lambda函数中使用已经实现的模型和服务会很好 - 我也会遇到这个问题。
如果您仍想尝试,可以
.sailsrc
中禁用并禁用尽可能多的中间件)和答案 1 :(得分:0)
我在AWS Lambda上成功使用waterline.js
快速和无服务器。 Waterline是Sails.js的ORM组件。
在Sails的引擎盖下,它使用express,因此可以使用无服务器。虽然Manuel提到它可能对Lambda来说太胖了。
const PGAdapter = require('sails-postgresql');
const Waterline = require('waterline');
const conf = {
"adapters":{
"sails-postgresql": PGAdapter
},
"datastores":{
"default":{
"adapter":"sails-postgresql",
"port":5432,
"poolSize":1,
"ssl":false,
"database":"development",
"host":"localhost",
"user":"***",
"password":"****"
}
},
"models":{
"User":{
"tableName":"users",
"attributes":{
"email":{
"type":"string",
"required":true
},
"first_name":{
"type":"string"
},
"last_name":{
"type":"string"
}
}
}
},
"defaultModelSettings":{
"primaryKey":"id",
"datastore":"default",
"attributes":{
"id":{
"type":"number",
"autoMigrations":{
"autoIncrement":true
}
}
}
}
}
在我的快速路线之前,我创建了一个中间件功能,将我的模型挂钩到应用程序。
app.use((req, res, next) => {
let waterline = conf;
Waterline.start(waterline, function(err, orm) {
if(err) {
console.error('Could not start up the ORM:\n',err);
return process.exit(1);
}
app.models = {
User: Waterline.getModel('user', orm)
}
next();
});
});
使用结果。
app.get('/', function (req, res) {
app.models.User.findOne({ id: 2 }).exec(function (err, result){
console.log('err:', err);
console.log('result:', result);
res.json(result);
});
});
通过一些调整,您可以将模型存放在外部文件中并自动加载它们。并根据环境交换数据库详细信息。这是我使用的配置功能。</ p>
const PGAdapter = require('sails-postgresql');
function createWaterlineConf(db, models) {
const defaults = {
adapter: 'sails-postgresql',
port: 5432,
poolSize: 10,
ssl: true
};
const databaseConf = Object.assign(defaults, db);
const waterlineConf = {
adapters: {
'sails-postgresql': PGAdapter
},
datastores: {
default: databaseConf
},
models: models,
defaultModelSettings: {
primaryKey: 'id',
datastore: 'default',
attributes: {
id: { type: 'number', autoMigrations: { autoIncrement: true } },
}
}
};
return waterlineConf;
}
module.exports.createWaterlineConf = createWaterlineConf;