为什么我们需要在bookshelf.js的fetch()方法中添加一个新对象?

Why do we need a new object in bookshelf.js fetch() method?

本文关键字:添加 一个 新对象 对象 方法 bookshelf js 为什么 我们 fetch      更新时间:2023-09-26

我是Node的新手,使用bookshelf.js作为我当前项目的ORM。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的工作方式需要为每个返回的结果创建一个新对象?

这很令人困惑。目前,只有一种类型的对象既表示"model"又表示"query builder"。

fetchWHERE子句前加上模型上设置的属性。

正在计划改变这一点。这里讨论。

不要像上面那样写代码,我建议这样做:

// 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) {//...