我正在从事电子商务项目(SOA体系结构)。 有多个应用程序(NodeJS express / mongoose)及其各自的API相互通信 例如: -App.1用于产品管理 -app.2用于购物车管理 -用于用户管理的app.3 ecc ecc ...
现在,我想在AWS Lambda中移动这些应用程序并将其迁移到FaaS架构,但是我不清楚多重功能如何共享通用模型。
例如: app1目前具有自己的产品模型:
productModel.js
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,trim: true
},price: {
type: Schema.Types.Number,required: true
}
});
const Product = mongoose.model('products',productSchema);
module.exports = Product;
它在控制器中用于获取或更新数据的
productController.js-内部方法getData
Product.find()
.then(products=> {
res.send(products);
})
.catch(err => {
console.log('err',err);
});
productController.js-内部方法updateData
var product = new Product({
description: req.body.description,price: req.body.price,});
product.save(function (err) {
if (err) {
console.log(err);
return;
}
});
现在我的目标是创建两个AWS Lambda函数:
1)第一个获取数据的人
2)第二次更新数据
我该怎么做?我的想法是创建两个安装了express和mongoose库的不同的nodejs项目(和存储库)。
第一个只有在控制器中获取数据的方法,第二个只有可以更新数据的方法,对吧?
两个函数共享相同的ProductModel,这是最好的方法吗? 1)在两个项目上都复制productModel->我认为这不是一个可维护的好主意。 2)创建一个只有一个具有多个功能的单一模型的整体存储库,该模型部署在多个AWS Lambda实例上->我认为创建单个整体存储库不是一个好主意 3)为productModel创建一个库,并将其作为两个项目的依赖项共享->这样好吗?我认为这种方法非常适合在单个点上处理模型更改并更新两个项目。 4)还有其他解决方案吗?
感谢您的帮助