JugglingDB自定义查询

时间:2013-08-25 14:06:27

标签: mysql compoundjs jugglingdb

我想知道如何创建一个“存储库”文件(对于symfony2用户),我将把所有特殊行为查询。

我有一个简单的数据库shema:

  • 用户(电子邮件)
  • RelationType(名称)
  • UserXUserXRelation(fromUser,toUser,relation)

我想在用户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中尝试过但没有成功。 我在这里Using arbitrary mySQL Query with JugglingDB?发现我应该使用shema对象来使用“查询”,我在哪里以及如何使用它?

回调是否如下所示:

function(err, data) {...}

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

其他问题:有没有办法将参数与PHP PDO方式绑定到jugglingdb?

谢谢大家。

1 个答案:

答案 0 :(得分:1)

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

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引用escaper,请注意sql注入,确保检查并清理了您的id变量。