我是Node的新手,并使用bookshelf.js作为我当前项目的ORM。 bookshelf.js的文档包含fetch()方法下的这个片段:
// select * from `books` where `ISBN-13` = '9780440180296'
new Book({'ISBN-13': '9780440180296'})
.fetch()
.then(function(model) {
// outputs 'Slaughterhouse Five'
console.log(model.get('title'));
});
http://bookshelfjs.org/#Model-fetch
令我困惑的是,如果我们要查询现有记录,为什么我们需要在这里创建一个新对象? bookshelf.js的工作方式是否需要为每个返回的结果创建一个新对象?
答案 0 :(得分:1)
这令人困惑。目前只有一种类型的对象代表" model"和"查询构建器"。
fetch
使用模型上的set属性预填充WHERE
子句。
有计划改变这种情况。讨论here。
我建议不要像上面那样编写代码,而是建议这样做:
// select * from `books` where `ISBN-13` = '9780440180296'
Book.where({'ISBN-13': '9780440180296'})
.fetch()
.then(function(model) {
// outputs 'Slaughterhouse Five'
console.log(model.get('title'));
});
(我知道你直接从文档中复制了这一点。)
如果您希望更新模型,请使用新的Model#refresh:
Book.forge({id: 5}).refresh().then(function (book) {//...