Node.js 在nodejs中AWS Lambda函数之间共享模型的最佳实践是什么?

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

我正在从事电子商务项目(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) 还有其他解决办法吗


感谢您的帮助

对于模型,您可以使用您调用的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;
    }
});