问题标签 [node-orm2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
345 浏览

node.js - 如何使用 ORM2 和 Node.js 保存关联的两条记录

我正在为 Node.js 使用 ORM2 模块(https://github.com/dresende/node-orm2),它似乎工作正常,但我无法找到关联两条相关记录的方法。

这是我的问题:

我有 entityA,它有很多 entityB 元素(一个简单的 hasMany 关系),现在..如何保存 entityA 类型的记录并将其与许多 entityB 类型记录相关联?以前有人用这个模块做过吗?

0 投票
1 回答
649 浏览

javascript - node-orm2 实例缺少保存方法

我是使用 node-orm2 的新手,并且被以下问题所困扰;

完整堆栈跟踪http://pastebin.com/cb9Lt9pB

此错误来自模型方法,定义如下;

模型定义的完整代码在这里http://pastebin.com/7Bv8XG36

据我所知,没有使用文档(https://node-orm.readthedocs.org/en/latest/ref/instance.html)中概述的保存方法返回实例。

如果我对用户对象执行 console.log,您可以清楚地看到它除了 getter 和 setter 之外没有任何方法。

如果我使用不正确,任何人都可以提供任何见解吗?或者任何可以帮助我理解为什么 save 方法不在实例上的指针。

作为参考,我正在使用最新版本的 node-orm2 ("orm": "*") 和 mysql。

0 投票
1 回答
690 浏览

node.js - 如何访问passport.deserializeUser中的node-orm2 Express中间件

我将Passport与node-orm2结合使用进行身份验证。Passport 要求您注册用于序列化和反序列化会话的用户的函数。我的用户存储在我通过 node-orm2 的 Express 中间件访问的数据库中。orm2 中间件将其模型标记到 req 对象上以便于访问。不幸的是,Passport 不提供对deserializeUser. 我遇到了这个解决方案,但我希望有更好的东西:

0 投票
1 回答
782 浏览

node.js - node-orm2 中的 REFERENCE KEY

我正在研究基于 node.js 的 REST API,我选择了postgresql数据库来存储数据。假设这个数据库有两个表名UserComment. AnyComment属于 One User,当我们决定删除一个User时,他/她的Comment's 必须被删除。所以,我设计了我的表如下:

但我不运行此代码node-orm2而是使用。我设计了两个简单的模型来处理这个简单的代码:

并将数据库与这些模型同步:

现在,我想插入属于 user_id 不存在的用户的新评论。因此,Comment模型接受这一点并将行插入comment表中。

我的问题是,我怎样才能做一些事情,比如REFERENCE KEYON UPDATE CASCADE ON DELETE CASCADE

提前致谢 :)

0 投票
1 回答
1287 浏览

javascript - 在 node.js (node-orm) 中链接模型关系,就像在 Rails 中一样

我正在构建一个相对较大的 NodeJS 应用程序,我目前正在尝试弄清楚如何从数据库中获取我需要的数据。这是我的模型的一部分:

一个用户有一个角色,该角色可以访问许多模块(其中有一个表 role_modules 来链接角色和模块)。

在 Rails 中,我会执行类似 user.role.modules 的操作来检索他有权访问的模块列表。在 NodeJS 中它有点复杂。我正在使用node-orm2和 PostgreSQL。这是我到目前为止所拥有的:

但我不能这样做,因为 item 只包含 role_id 和 module_id。如果我想获得名称,我将不得不这样做item.getModule(function() {...}),但结果将是异步的......所以我真的不明白我如何最终得到一个包含用户有权访问的模块名称的数组。 ..有什么想法吗?

另外,这不是比实际运行一个带有许多 JOIN 的 SQL 查询慢得多吗?因为正如我所见,ORM 进行了多次查询以获取我想要的数据......

谢谢!

0 投票
1 回答
592 浏览

node.js - node-orm-transaction:是否可以在一个 mysql 连接中为所有客户端执行事务?

目前我只连接到数据库一次,当我启动我的节点应用程序时,就在我加载所有模型之后,我的应用程序准备好通过 socket.io rpc 处理任何请求。

我需要实现逻辑 - 如果客户端执行复杂的请求,并且如果至少一个操作在链中失败 - 例如 - 所有 sql 请求都已成功完成,但未发送带有新密码的电子邮件 - 回滚所有内容并显示错误。

我在问,因为我记得 - 例如,在 php 中,所有进程都与 db 有不同的连接,这就是为什么所有事务都是独立的并且不能交叉,但对于节点来说,它只是一个带有异步请求的进程,理论上可以交叉。这只是我在 node.js 上的第一个应用程序。

是否可以为所有客户端建立 1 个 mysql 连接,或者我需要连接到 mysql,在 socket.io 的每个请求中从远程文件中检索所有模型?

0 投票
2 回答
1927 浏览

node.js - Node.js orm2 - 在 OneToMany 关系中检索新关联时遇到问题

我正在使用 node-orm2 来感受在 RESTful API 中使用的感觉。我在后端使用 Postgres 数据库。

我正在尝试对他们的文档进行变体,其中我在一个人和一个任务之间有一个 OneToMany 关系,在一个文件中包含以下内容:

应用程序.js

我为以下资源设置了 GET 和 POST 路由:

  • {GET,POST} /人

  • {GET,POST} /任务

在数据库的初始加载时,我创建了一个 Person 实例,其任务只是为了在数据库中拥有一些东西。

我可以在localhost:4730/people上执行GET并取回加载时创建的人及其任务(真棒):

如果我在localhost:4730/tasks上执行GET ,我会按预期返回:

现在,这是我的问题的开始:

如果我使用有效负载对localhost:4730/tasks进行POST :

然后在localhost:4730/tasks上做一个新的GET我得到了这个预期:

现在,在localhost:4730/people上执行新的GET会显示分配给 person_id 1 (Kenny Powers) 的两个任务,但可惜,该关联似乎已经在多方面注册,但不是在关系的一方:

我无法从可能出错的文档中解决问题。有没有人遇到过类似的问题?

谢谢。

0 投票
0 回答
308 浏览

javascript - node-orm2 - 不创建关联函数

当我与 function 创建多对一关系时hasOne(),我只获得了 function findBy,但没有创建应该可用的 setter 和 getter。

例如:

我有一个User模型和一个UserType模型

在此之后,我的用户模型只有一个findByType()很好用的功能,但我没有setType()orgetType()功能。

也许我错过了什么!

0 投票
1 回答
732 浏览

node.js - nodejs orm 多对多

您好,我正在尝试使用node-orm2.

我有这个表:

  • project--> 身份证,姓名
  • user--> 身份证,姓名
  • user_project--> user_fk, project_fk(这是多对多关联表)

控制器返回给我一个用户列表和一个项目列表,但我需要返回另一个属性,其中包含每个用户的项目和每个项目的用户。

楷模:

控制器:

我该怎么做我很困惑,我阅读了文档,但我不明白这一点。

0 投票
1 回答
344 浏览

node.js - 节点 Orm2 交易插件

我似乎对如何将事务插件(使用 postgresql)与节点 orm2 一起使用有问题。我想我误解了事务如何与异步函数调用一起工作。这是我的代码示例:

当我运行这段代码时,偶尔我会看到 console.log 输出:

这与我预期的相反。而且我对行所做的更改不会保存到数据库中。看起来这里的异步函数调用存在一些问题,但我只是按照节点 orm2 事务插件中的文档进行操作。

有人知道我做错了什么吗?谢谢!