首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Meteor中创建记账系统

在Meteor中创建记账系统
EN

Stack Overflow用户
提问于 2015-06-28 22:50:32
回答 2查看 661关注 0票数 0

我想创建一个会计系统。我正在学习“流星”。但是我已经看到Meteor不支持关系数据库,所以我不知道如何拥有一个数据结构,用户可以在其中创建预算,在这个预算的/related中创建多个会计数字,并在这些会计数字上创建多个预算行。

通常,我将使用外键,有一个具有id字段的表budget,一个具有id字段和引用budget的外键的表accounting_numbers,以及一个具有引用accounting_numbers的外键的表budget_line

但如果我不能引用MongoDB中的其他表,我就会有点困惑如何创建简单的web应用程序,比如会计/预算系统。我想知道最好的选择是不是也将预算id和预算名称保存在accounting_numbers中的每个对象中,但如果用户想要更改预算名称怎么办。他/她是否必须编辑accounting_numbers中所有对象中的名称?如果对象budget_line属于accounting_numbers中的一个对象,而该对象又属于budget中的一个对象,那么我需要在budget_line中的每个对象中存储多少数据

EN

回答 2

Stack Overflow用户

发布于 2015-06-28 23:21:23

你仍然可以在Mongo aka集合中创建多个“表”,并模拟关系结构。就结构而言,Mongo可以在结构上非常紧密地映射到关系数据库。唯一的问题(这是一个很大的问题)是Mongo不支持跨这些“表”的连接,因此你需要在你的代码中手动执行这些连接,或者让ORM为你做。Mongo也没有跨“表”的事务,所以这也是你需要费力手动或通过库来实现的东西。

也就是说,当构建任何东西时,最好使用合适的工具来完成这项工作,而Meteor可能不是您想要的工具。Mongo非常适合处理非关系数据的应用程序。会计数据几乎总是关系数据。我知道Mongo是"webscale“之类的,但是看在上帝的份上,请使用关系数据库。

票数 1
EN

Stack Overflow用户

发布于 2015-06-29 03:25:40

你也可以看看“太空大象--流星的PostgresSQL实现”。您可以使用PostrgreSQL作为数据库,而不是使用Meteor,而不会失去Meteor提供的主要好处。主要是“反应性”和“延迟补偿”。

还有一些包可以用来模拟关系数据库的功能。"Meteor Collection Hooks“就是一个例子。这个包让你在"Mongo.Collection“调用之前和之后添加功能。例如,您可以像这样使用它:

代码语言:javascript
复制
Budget.after.update(function(userId, doc, fieldNames, modifiers, options){
  if (this.previous.budgetName !== doc.budgetName){
    AccountingName.update({budgetId: doc._id}, {$set: { budgetName: doc.budgetName }}, { multi: true });
  }
});

我也同意Jamgreen的回答,但如果你真的想使用Meteor,我相信使用这个包并对MongoDB有更多的了解,你可以很容易地实现你的应用。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31101126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档