首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我们在bookshelf.js fetch()方法中需要一个新对象?

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

Stack Overflow用户
提问于 2015-08-20 00:56:21
回答 1查看 423关注 0票数 1

我是Node的新手,使用bookshelf.js作为我当前项目的对象/对象模型。bookshelf.js的文档在fetch()方法下包含以下代码片段:

代码语言:javascript
复制
// 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的工作方式是否需要为每个返回的结果创建一个新对象?

EN

回答 1

Stack Overflow用户

发布于 2015-08-20 18:12:15

这是令人困惑的。目前,只有一种类型的对象同时表示“模型”和“查询构建器”。

fetch使用模型上设置的属性预先填充WHERE子句。

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

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

代码语言:javascript
复制
// 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

代码语言:javascript
复制
Book.forge({id: 5}).refresh().then(function (book) {//...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32101415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档