Bookshelf.js-有一种关系不太好
Bookshelf.js - hasOne relationship not working well
我还不太熟悉bookboxf.js,所以请耐心等待。
由于我在学习,我使用MySQL,并且有一个非常简单的结构。也就是说,两个实体,带有一个辅助密钥。这是我的结构:
CREATE TABLE IF NOT EXISTS `city` (
`city_id` int(11) NOT NULL,
`code` int(11) NOT NULL,
`name` varchar(255) COLLATE utf8_bin NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
CREATE TABLE IF NOT EXISTS `people` (
`people_id` int(11) NOT NULL,
`city_id` int(11) NOT NULL,
`name` varchar(255) COLLATE utf8_bin NOT NULL,
`age` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
ALTER TABLE `city`
ADD PRIMARY KEY (`city_id`);
ALTER TABLE `people`
ADD PRIMARY KEY (`people_id`), ADD KEY `city_id` (`city_id`);
ALTER TABLE `people`
ADD CONSTRAINT `people_ibfk_1` FOREIGN KEY (`city_id`) REFERENCES `city` (`city_id`);
这是我在expressjs中使用书架的代码:
var City = bookshelf.Model.extend({
tableName: 'city'
});
var User = bookshelf.Model.extend({
tableName: 'people',
city: function(){
return this.hasOne(City, 'city_id');
}
});
这是我如何运行查询的示例代码:
new User().where({people_id: req.params.id })
.city()
.fetch()
.then(function(user){
res.send(user.toJSON());
})
.catch(function(error){
res.send(error);
});
然而,当我运行应用程序时,我只得到一个空的json:
{}
我已经在书架中启用了调试模式,这是它试图执行的查询:
{ __cid: '__cid1',
method: 'select',
options: undefined,
bindings: [ undefined, 1 ],
sql: 'select `city`.* from `city` where `city`.`city_id` = ? limit ?' }
正如我所说的,我对书架还是个新手。但这毫无意义;为什么它不比较city.city_id和person.city_id(外键)?
感谢您的时间和回答!
您可以通过以下操作使其工作:
1.)将主键主键重命名为id
。主键应该是city.id
,而不是city.city_id
。
2.)将用户定义中的关系更改为return this.belongsTo(City);
3.)您可以通过执行new User({id: 1}).fetch({ withRelated: ['city'] });
来访问城市
相关文章:
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 有没有一种方法可以防止img get请求使用css或js发生
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- 有没有一种方法可以仅使用HTML/CSS来隐藏基于特定值的数据单元格
- 有没有一种方法可以从URL跟踪请求的域
- 有没有一种方法可以列出Ember.Object的所有绑定
- 有没有一种方法可以获得three.js的最小/lite版本
- 有没有一种方法可以在没有文档或jQuery的情况下使用javascript解码html实体
- ES6是否引入了一种机制来生成块范围的函数语句(而不是表达式)
- 有没有一种方法可以从Javascript检测特定的应用程序是否安装在(AndroidiOS)设备上
- 只能存储一种类型的对象的数组
- 在HTML/JavaScript中,有没有一种方法可以在图像开始加载时知道图像的最终布局尺寸
- 有没有一种方法可以在Javascript中进行可变递归currying
- 有没有一种方法可以检测ios<>使用jquery和触发器操作形成导航按钮
- Bookshelf.js-有一种关系不太好
- AJAX 帖子 8 位干净吗?/ 与 Base64 的关系 / 另一种选择?/它在哪里
- 一种处理多个requirejs上下文之间常见依赖关系的实践