2

我试图弄清楚如何创建一个“存储库”文件(对于 symfony2 用户),我将在其中放置我所有的特殊行为查询。

我有一个简单的 db shema:

  • 用户(电子邮件)
  • 关系类型(名称)
  • UserXUserXRelation (fromUser, toUser, 关系)

我想在我的用户 Y 上检索具有关系 X 的用户,所以在 sql 中它看起来像:

var sql = 'SELECT u.email, u.id
FROM user u
INNER JOIN UserXUser uxu ON uxu.toUser_id = u.id
WHERE uxu.relation_id = 1 AND uxu.fromUser_id = '+id

我应该在哪里创建这个方法?我在 db/shema.js 和 app/models/user.js 中尝试过,但没有成功。我在这里找到了使用 JugglingDB 的任意 mySQL 查询?我应该使用 shema 对象来使用“查询”,我在哪里以及如何使用它?

回调是否看起来像这样:

function(err, data) {...}

在这种情况下是否有一些关于代码分离的最佳实践?

附加问题:有没有办法将 PHP PDO 方式与 jugglingdb 绑定参数?

谢谢大家。

4

1 回答 1

1

可以使用 jugglingdb 和 Compoundjs 执行任意查询。如果您使用的是 Compoundjs,则可以只使用compound.models.user.schema.adapter.query(). 复合对象应该被解析到您的用户模型中,这意味着您可以访问许多其他方法。在模型中使用此查询的方式是在 users 模型中使用以下代码创建一个方法:

var sql = 'SELECT u.email, u.id
FROM user u
INNER JOIN UserXUser uxu ON uxu.toUser_id = u.id
WHERE uxu.relation_id = 1 AND uxu.fromUser_id = '+id
compound.models.user.schema.adapter.query(sql, function(err, data) {
    if(error) {
        console.log(error)
    } else {
        //Enjoy your data
    }
})

由于这会覆盖 jugglingdb 引用转义符,因此请注意 sql 注入,请确保检查和清理您的 id 变量。

于 2014-11-24T20:22:42.773 回答