serverless express可以与sails.js应用程序一起使用吗
奇怪的是,谷歌没有这方面的任何信息serverless express可以与sails.js应用程序一起使用吗,express,sails.js,aws-lambda,Express,Sails.js,Aws Lambda,奇怪的是,谷歌没有这方面的任何信息 我想在即将到来的项目中使用aws lambda。我想用sails.js构建它。我知道aws无服务器express允许在lambda上运行express应用程序。这是否也适用于sails,还是不起作用?我使用的是sails.js,但我不会将其放入Lambda函数中,因为它太胖,需要几秒钟才能启动,并且不符合Lambda函数的使用模式。当然,我知道,如果您已经在Lambda函数中实现了模型和服务,那将是一件非常好的事情——我也将讨论这个问题 如果你还想试试,你可以
我想在即将到来的项目中使用aws lambda。我想用sails.js构建它。我知道aws无服务器express允许在lambda上运行express应用程序。这是否也适用于sails,还是不起作用?我使用的是sails.js,但我不会将其放入Lambda函数中,因为它太胖,需要几秒钟才能启动,并且不符合Lambda函数的使用模式。当然,我知道,如果您已经在Lambda函数中实现了模型和服务,那将是一件非常好的事情——我也将讨论这个问题 如果你还想试试,你可以
- 剥离Lambda sails.js(在
中尽可能多地禁用,并尽可能多地禁用中间件)和.sailsrc
- 尝试使用Lambda的相同容器策略()
waterline.js
。是Sails.js的ORM组件
在船帆罩下,它使用express,因此可以使用无服务器。尽管正如曼纽尔提到的,它对兰博达来说可能太胖了
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
}
}
}
}
}
在我的express routes之前,我创建了一个中间件函数,将我的模型与应用程序挂钩
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);
});
});
通过一些调整,您可以将模型放置在外部文件中并自动加载到中。并根据环境交换数据库详细信息。下面是我使用的配置函数
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;
你有什么合适的解决办法吗?