在NodeJS / Knex / Bookshelf应用程序中,我正在帮助重写,我在withRelated
模型上对消息和兴趣进行User
查询:
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'),
};
});
但它正在返回CollectionBases:
{ id: 1,
messages:
CollectionBase {
model: { ... }
}
}
interests:
CollectionBase {
model: { ... }
}
}
但我需要它来返回实际的数据对象数组:
{ 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'ify它,我会收到错误:
user.toJSON不是函数
var user = {
id: user.id,
prop1: user.related('messages'),
prop2: user.related('interests'),
};
return user.toJSON();
如何返回User的每个相关对象的对象数组?
答案 0 :(得分:1)
而不是:
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对象。