Node.js 在nodejs中AWS Lambda函数之间共享模型的最佳实践是什么?
我正在从事电子商务项目(SOA架构)。 有多个应用程序(NodeJS express/mongoose)具有各自的API,可以相互通信 例如: -产品管理应用程序1 -应用程序2用于购物车管理 -应用程序3用于用户管理 ecc ecc 现在我想在AWS Lambda中移动这些应用程序,并将它们迁移到FaaS体系结构,但我不清楚多个功能如何共享公共模型 例如: app1目前拥有自己的产品模型: productModel.js 它在控制器中用于获取或更新数据: productController.js-内部方法getData productController.js-内部方法updateData 现在我的目标是创建两个AWS Lambda函数: 1) 第一个获取数据的 2) 第二步是更新数据 我该怎么做?我的想法是创建两个不同的nodejs项目(和存储库),其中安装了express和mongoose库 第一个只有在控制器中获取数据的方法,第二个只有do update data方法,对吗 两个函数共享同一个ProductModel,哪种方法是最好的? 1) 在两个项目上复制productModel->我认为这不是一个好的可维护的想法。 2) 创建一个单一存储库,该存储库只有一个模型,多个功能部署在多个aws lambda实例上->我认为创建一个单一存储库不是一个好主意 3) 为productModel创建一个库,并将其作为两个项目的依赖项共享->好吗?我认为这种方法适合于在一个点上处理模型更改并更新两个项目。 4) 还有其他解决办法吗Node.js 在nodejs中AWS Lambda函数之间共享模型的最佳实践是什么?,node.js,mongoose,aws-lambda,Node.js,Mongoose,Aws Lambda,我正在从事电子商务项目(SOA架构)。 有多个应用程序(NodeJS express/mongoose)具有各自的API,可以相互通信 例如: -产品管理应用程序1 -应用程序2用于购物车管理 -应用程序3用于用户管理 ecc ecc 现在我想在AWS Lambda中移动这些应用程序,并将它们迁移到FaaS体系结构,但我不清楚多个功能如何共享公共模型 例如: app1目前拥有自己的产品模型: productModel.js 它在控制器中用于获取或更新数据: productController.j
感谢您的帮助对于模型,您可以使用您调用的lambda层。
一个函数一次最多可使用5层。那么我能做些什么来管理很多模型呢?您是否建议创建多个图层组合?例如:1)A层带有:-节点-express-mongoose 2)B层带有-模型1-模型2 3)C层带有:-模型1-模型3 4)D层带有:-模型2-模型3 5)E层带有:-模型1-模型2-模型3,然后将所需模型附加到每个应用程序?例如:Lambda应用程序A到A层和B层Lambda应用程序B到A层和E层在这种情况下,我会将所需的模型导出为节点包,并在Lambda中要求它。您建议在多个存储库中分离Lambda功能吗?不,我们有一个aws repo,具有不同的云形成策略。例如,一个用于订单,一个用于客户等
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const productSchema = new Schema({
insDate: {
type: Schema.Types.Date,
required: true,
default: Date.now()
},
description: {
type: Schema.Types.String,
required: true,
trim: true
},
price: {
type: Schema.Types.Number,
required: true
}
});
const Product = mongoose.model('products', productSchema);
module.exports = Product;
Product.find()
.then(products=> {
res.send(products);
})
.catch(err => {
console.log('err', err);
});
var product = new Product({
description: req.body.description,
price: req.body.price,
});
product.save(function (err) {
if (err) {
console.log(err);
return;
}
});