我是bookshelfjs的新手,我想使用其他表中的ID从其他表中获取数据。 我正在使用这个样本数据:
/* User's Table */
----------------+-------------------+----------
lastname | firstname | id
----------------+-------------------+---------
Dela Cruz Juan 1
Pendoku Pedro 2
/* Logs's Table */
----------------+--------------+----------
userid | time | id
----------------+--------------+---------
1 8:00 1
2 12:00 2
1 9:00 3
问题:如何通过bookshelf.js查询特定用户的日志?
所以结果应该是这样的:
----------------+--------------+----------
lastname | time | id
----------------+--------------+---------
Dela Cruz 8:00 1
Dela Cruz 9:00 3
我的查询:
new User({'lastname': 'Dela Cruz'})
.logs()
.fetch()
.then(function(timelog) {
console.log(timelog.toJSON());
});
我的模特
var User, Log;
User = bookshelf.Model.extend({
tableName:'user',
logs: function() {
return this.hasMany(Log, 'userid');
}
});
Log = bookshelf.Model.extend({
tableName:'log',
user: function(){
return this.belongsTo(User, 'userid');
}
});
记录错误:
{ __cid: '__cid1',
method: 'select',
options: undefined,
bindings: [undefined],
sql: 'select log.* from log where log.userid = ?'
}
答案 0 :(得分:2)
将用户模型更改为:
User = bookshelf.Model.extend({
tableName:'user',
logs: function() {
return this.hasMany(Log);
}
});
试试这个
new User({'lastname': 'Dela Cruz'})
.fetch({withRelated:['logs']})
.then(function(timelog) {
console.log(timelog.toJSON());
});
答案 1 :(得分:1)
尝试将{idAttribute:'UserId'}添加到您的用户模型中 我发现我对FieldNames区分大小写,因此'userid'导致没有返回数据但'UserId'没有。因此,请确保它与db
中的字段匹配所以将模型更改为
User = bookshelf.Model.extend({
tableName:'user',
idAttribute: 'userid',
logs: function() {
return this.hasMany(Log);
}
});
尝试查询uglycode的答案