如何在bookshelf.js中连接列?

时间:2017-11-10 19:45:46

标签: sql node.js postgresql knex.js bookshelf.js

尝试使用书架和连结ID选择列。我的db是postgresql。在knex,我这样做:

knex('client_users')
    .select(
        'client_user_id as id',
        'status',
        'email',
        'last_login_date as lastLoginDate',
        knex.raw(`CONCAT(first_name, ' ', last_name) as "displayName"`)
    )
    .whereIn('client_user_id', clientUserIds)
    .andWhere('status', 'pending')
    .tap(clientUsers => console.log('clientUsers retrieved:', clientUsers));

完成工作并返回:

[{
    id: 1, 
    status: 'pending', 
    email: 'pennywise@derry.com, 
    lastLoginDate: [Date Object], 
    displayName: 'John Smith'}, 
    {...}, {...}, etc]

文档不清楚,我在他们选择的文档中看到,但没有关于它需要什么样的参数或如何做我想要的事情:(

2 个答案:

答案 0 :(得分:0)

好吧,在我看来,解决方案非常愚蠢。所以我的模型名为ClientUsers,而我所要做的就是添加.query()文档真的不清楚这个。哦,好吧......不是我所期望的诚实,也许还有更好的方法。

ClientUsers.query()
    .select(
        'client_user_id as id',
        'status',
        'email',
        'last_login_date as lastLoginDate',
        knex.raw('CONCAT(first_name, \' \', last_name) as "displayName"')
    )
    .whereIn('client_user_id', clientUserIds)
    .andWhere('status', 'pending')
    .tap(clientUsers => console.log('clientUsers retrieved:', clientUsers));

答案 1 :(得分:0)

let url = "http://google.com/";

let result = await db.select(
"id", "title", 
db.raw(`CONCAT('${url}',icon) as "icon"`)).from('event_types').where('status', '=', true);

记住单号和波浪号