Nodejs环境下Mean架构适合做ERP吗?

Nodejs环境下Mean架构适合做ERP吗?

Mean架构做ERP合适吗?有没有例子?

25 回复

Mean架构做ERP合适吗?有没有例子?


报表什么的有点麻烦,其他的还行吧。

Node.js环境下Mean架构适合做ERP吗?

在讨论Node.js环境下的MEAN架构是否适合构建ERP(企业资源规划)系统之前,我们需要理解MEAN架构的组成及其特点。MEAN架构是由MongoDB、Express.js、AngularJS和Node.js四个技术栈组成的全栈解决方案。

MEAN架构的特点

  1. MongoDB:一个NoSQL数据库,非常适合处理非结构化数据。
  2. Express.js:一个简洁而灵活的Node.js Web应用框架,用于快速构建后端服务。
  3. AngularJS:一个JavaScript框架,用于构建动态前端应用。
  4. Node.js:一个基于Chrome V8引擎的JavaScript运行时,可以使用JavaScript编写服务器端代码。

MEAN架构是否适合ERP?

ERP系统通常需要处理大量的业务逻辑和复杂的数据模型。MEAN架构在处理这类需求时有其优势:

  • 灵活性:由于MongoDB是非关系型数据库,它可以灵活地存储各种类型的数据。
  • 实时性:通过Node.js的事件驱动模型,可以实现高效的实时数据处理。
  • 统一语言:整个开发流程中只使用一种编程语言(JavaScript),这有助于团队协作和代码维护。

示例代码

以下是一个简单的Node.js + Express + MongoDB示例,展示如何创建一个基本的库存管理系统,这是ERP系统的一部分。

// 安装必要的依赖
// npm install express mongoose body-parser

const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.json());

// 连接MongoDB数据库
mongoose.connect('mongodb://localhost/erp', { useNewUrlParser: true, useUnifiedTopology: true });

// 定义库存模型
const InventorySchema = new mongoose.Schema({
    name: String,
    quantity: Number,
    price: Number
});

const Inventory = mongoose.model('Inventory', InventorySchema);

// 创建库存项
app.post('/inventory', async (req, res) => {
    const inventoryItem = new Inventory(req.body);
    await inventoryItem.save();
    res.send(inventoryItem);
});

// 获取所有库存项
app.get('/inventory', async (req, res) => {
    const inventoryItems = await Inventory.find();
    res.send(inventoryItems);
});

// 启动服务器
app.listen(3000, () => console.log('Server started on port 3000'));

结论

虽然MEAN架构具有许多优点,但是否适合构建ERP系统还需根据具体需求来判断。对于某些场景,如需要处理大量并发请求或需要复杂的事务管理,可能需要考虑其他架构或技术栈。总体来说,MEAN架构可以作为ERP系统的良好起点,特别是对于中小型企业。

我觉得适不适合,可以看4个东西的优点是否突出以及缺点是否可以容忍(废话)。 M:mongodb nosql的缺点 A:IE8以上,Angular的优点是IO密集 N:nodejs现在是Fork了io.js,开发时注意异步之类的。

这个算不算ERP…

5EE4BFF3-2CD8-49FE-9645-5D93CD8FBA2F.png

楼上这个例子就不错,有源码吗?就想找个例子学习一下

不适合,建议用关系型数据库,不然会很惨

[@violet-day](/user/violet-day) 为什么会很惨呢,貌似大家对MongoDB评价都不错?

[@dabianzhixing](/user/dabianzhixing) MongoDB不适合做erp,不支持事务。而且mongo的数据结构设计起来容易出问题,关系型数据库只要设计符合第三范式就行,因为关系然后分表,对于你以后做查询都很方便。

[@violet-day](/user/violet-day) [@dabianzhixing](/user/dabianzhixing) 这里有一个和上面图的结构一样的系统, 不过简单一些. 有兴趣可以看看, 源码 https://github.com/TossShinHwa/CMS 2139D8A4-5892-4420-A0EB-6594B8351F35.png

[@violet-day](/user/violet-day) 很多人都喜欢直接说NoSQL不支持事务, 严格的来说其实是不正确的. 因为NoSQL基本在同一个聚合上面都是具有事务性的. 你完全可以根据业务需求, 把需要事务的操作放在一个聚合里面就搞定了.

不过确实是NoSQL的查询在设计schema的时候就决定了, 所以schema的好坏会直接印象这个系统的可扩展性.

[@TossShinHwa](/user/TossShinHwa) 对单个文档的操作是原子操作,但是如果文档的schema做的太复杂的,查询起来会很吃力。今年大半年就耗在个ERP上面了,心塞。

[@violet-day](/user/violet-day) 确实是一个坑, 被坑几次之后有经验就好了, 都是这么过来的. 因为schema直接影响查询方式, 所以一开始就一定要把所有查询的情况考虑到再做设计, 否则后面会比较坑. 一般都要多做冗余.

不过即使是需求变动, 我觉得相对于关系型数据库的数据迁移, NoSQL迁移起来要方便多了. 关系型DB数据量大了之后给table加一个column都是胆战心惊的.

[@dabianzhixing](/user/dabianzhixing) [@TossShinHwa](/user/TossShinHwa) 可以看看loopback这个框架,专门用来开发企业级应用,效率很高。

[@violet-day](/user/violet-day) [@TossShinHwa](/user/TossShinHwa) 非常感谢两位大神的指导啊!这两天有别的任务,临时干了点别的,过两天有时间再细细的看看!

[@violet-day](/user/violet-day) loopback试过,感觉有些重,虽然集成了很多东西,但是很多你想做的它帮不了你。

既然你指定了erp,而不是其它类型, 那就明确的说不适合 nosql目前只能是辅助 erp的三个特征

  • 事务
  • 数据正确性
  • 数据实时性, 查询条件的复杂性

同nosql最初的目标都相背的

以事务为例子一张销售单需要同时变更 销售订单发货, 更新库存 更新 应收应付, 生成一或多个凭证,在凭证生成过程中更新科目 复杂的情况还有就不说了,一个文档中的事务是无法达成的 nosql的cache类设计, 冗余类设计更新通常有时效,不是及时的,导致统计数据不实时不正确, 查询条件多且复杂,导致冗余设计通常无效, 需要多个文档连接导致最终还不如关系数据库等等 但是nosql最为辅助手段 是有很多点可挖的,这个我也在摸索中,不好展开说

[@violet-day](/user/violet-day) 我也就试了两三天,感觉是想做成个Node里德Django,什么都得按它规定的来

[@TossShinHwa](/user/TossShinHwa) 你这个不算的,最多算mis

[@TossShinHwa](/user/TossShinHwa) 这种最好SQL吧,芒果会弄死你的……

[@SoaringTiger](/user/SoaringTiger) 这比 Django 负责的事情更多, 指定了前段 JS 框架和后端数据库的.

[@i5ting](/user/i5ting) 好吧.

[@hainee](/user/hainee) 确实, NoSQL 的 schema 设计需要做思维上的转变.

在Node.js环境下,MEAN(MongoDB、Express.js、AngularJS、Node.js)架构非常适合构建企业资源规划(ERP)系统。MEAN堆栈提供了强大的工具来处理后端逻辑(Node.js + Express.js)、数据库管理(MongoDB)以及前端用户界面(AngularJS)。以下是一些理由说明为什么MEAN适合开发ERP:

  1. 实时更新:通过使用WebSocket技术(如Socket.IO),您可以实现前后端之间的实时通信。
  2. 模块化结构:Express.js提供了一种模块化的结构,使得您能够轻松地将不同的功能组织成独立的服务。
  3. 数据驱动设计:MongoDB允许您存储灵活的数据结构,这对于处理ERP系统中复杂的数据关系非常有用。
  4. 高性能:Node.js的非阻塞I/O模型使其在高并发场景下表现出色。

示例代码

1. 创建一个简单的Express.js服务器

const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
    res.send('Hello ERP World!');
});

app.listen(port, () => {
    console.log(`Server running at http://localhost:${port}`);
});

2. 使用MongoDB进行数据操作

首先,安装mongoose库:

npm install mongoose

然后创建一个模型来表示库存信息:

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost/erp', { useNewUrlParser: true, useUnifiedTopology: true });

const inventorySchema = new mongoose.Schema({
    product: String,
    quantity: Number,
    price: Number
});

const Inventory = mongoose.model('Inventory', inventorySchema);

// 添加一条记录
async function addInventory() {
    const newInventory = new Inventory({
        product: 'Widget',
        quantity: 100,
        price: 5.99
    });
    await newInventory.save();
}

// 查询所有记录
async function getInventories() {
    const inventories = await Inventory.find();
    console.log(inventories);
}

以上代码展示了如何设置一个基本的Express.js服务器,并使用Mongoose与MongoDB交互以处理ERP相关的库存信息。这只是一个简单的示例,实际应用中还需要考虑安全性、错误处理及更复杂的业务逻辑。

希望这些信息对您有所帮助!如果您有任何其他问题或需要进一步的指导,请随时告诉我。

回到顶部