2013-08-25 47 views
2

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

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

  • 用户(电子邮件)
  • RelationType(名称)
  • 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中没有成功。 我在这里发现Using arbitrary mySQL Query with JugglingDB?,我应该使用shema对象来使用“查询”,在哪里以及如何使用它?

是否回调将是这样的:

function(err, data) {...} 

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

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

谢谢大家。

回答

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报价逃避者,SQL注入的提防,确保你的id变量被检查和消毒。