ソーシャルネットワーキングサイト用のプロファイルシステムを作成しています。私は関係を使用して、異なるテーブルのユーザーに関するさまざまな情報を表示するのに問題があります。ここに私のBookshelfJSモデルの2つです:BookshelfJS hasOne関係に有効なターゲットモデルを定義する必要があります
ルーム:
var user = require(__base + '/app/database/models/user/user').model;
exports.model = Application.Adapter.Model.extend({
tableName: 'rooms',
hasTimestamps: false,
owner: function() { return this.hasOne(user, 'id', 'owner_id'); }
});
ユーザー:
var user_badges = require(__base + '/app/database/models/user/user_badges').model,
user_settings = require(__base + '/app/database/models/user/user_settings').model,
rooms = require(__base + '/app/database/models/room/room').model,
groups = require(__base + '/app/database/models/group/group').model;
exports.model = Application.Adapter.Model.extend({
tableName: 'users',
hasTimestamps: false,
badges: function() { return this.hasMany(user_badges, 'user_id', 'id'); },
settings: function() { return this.hasMany(user_settings, 'user_id', 'id'); },
rooms: function() { return this.hasMany(rooms, 'owner_id', 'id'); },
groups: function() { return this.hasMany(groups, 'user_id', 'id'); }
});
これらのモデルの両方が互いに異なるページ上から完全に独立した使用されています。私は現在、プロファイルページのユーザーモデル内のすべてのリレーションを使用していますが、それらは機能しています。私は所有者の情報と一緒に部屋に関するすべての情報を表示する別のページがあります。私はhasOneの& belongsToの両方を使用してみましたが、ように見えることはできません
A valid target model must be defined for the rooms hasOne relation
:私は今のところこれは私が受けてるの誤差がある
var room = require(__base + '/app/database/models/room/room').model;
var room_id = 1;
return new room({id: room_id}).fetch({
withRelated: [
{'owner': function(qb) {
qb.column('id','username');
}}
],
columns: ['id', 'owner_id', 'name']
})
.then(function resolve(result)
{
if(result == null) return Promise.reject(new Error('invalid_room'));
return Promise.resolve(result.toJSON());
},
function reject(err)
{
return Promise.reject(err);
});
部屋のモデルを使用していますどのようにここですそれは、誰かが解決策を持っている場合は、私に感謝を知らせてください!
[Registry Plugin](https://github.com/tgriesser/bookshelf/wiki/Plugin:-Model-Registry)をご覧ください。それは、関係の定義をより簡単にします。 – flaviodesousa