knex 与相关 returns collection 碱基

knex with related returns collection bases

在我帮助重写的 NodeJS/Knex/Bookshelf 应用程序中,我正在对 User 模型进行 withRelated 查询以获取消息和兴趣:

  return User.query({where: {id: user.id}})
      .fetch({withRelated: ['messages', 'interests']}).then(function(user) {
        return {
          id: user.id,
          prop1: user.related('messages'),
          prop2: user.related('interests'),
        };
      });

但它正在 return返回 CollectionBases:

{ id: 1,
  messages: 
    CollectionBase {
     model: { ... }
    }
   }
  interests:
    CollectionBase {
     model: { ... }
    }
  }

但我需要它 return 实际的数据数组 objects:

{ id: 4068,
  messages: 
   [ { id: 2,
       title: 'Customer',
       _pivot_user_id: '1',
       _pivot_user_role_id: '2' } ],
  interests: 
   [ { id: 86,
       name: 'interest1',
       _pivot_user_id: '4068',
       _pivot_org_id: '86' } ] }

如果我尝试JSON'化它,我得到错误:

user.toJSON is not a function

var user = {
  id: user.id,
  prop1: user.related('messages'),
  prop2: user.related('interests'),
};
return user.toJSON();

如何为用户 return 每个相关 objects 的 objects 数组?

而不是:

return user.toJSON();

尝试做:

return JSON.stringify(user);

如果你真的想要JSON,或者这个:

var user = {
  id: user.id,
  prop1: user.related('messages').toJSON(),
  prop2: user.related('interests').toJSON(),
};

如果您想要一个在序列化为 JSON 之前看起来像的 JS 对象。