Tag: bookshelf.js

书架JS关系 – 获取计数

我试图让用户数属于特定的公司。 这是我的模型; var Company = Bookshelf.Model.extend({ tableName: 'companies', users: function () { return this.hasMany(User.Model, "company_id"); }, users_count : function(){ return new User.Model().query(function(qb){ qb.where("company_id",9); qb.count(); }).fetch(); }, organization: function () { return this.belongsTo(Organization.Model, "organization_id"); } }); 方法“用户”工作得很好,没问题。 方法“users_count”查询运作良好,但不能得到“公司”模式的价值。 在路线上,我使用这样的书架模型; new Company.Model({id:req.params.id}) .fetch({withRelated:['users']}) .then(function(model){ res.send(model.toJSON()) }) .catch(function(error){ res.send(error); }); 我应该如何使用users_count方法,我有点困惑(可能是因为承诺)

在forEach里面做asynchronous调用

我想通过Node.js中的asynchronous函数迭代通过对象的数组,并添加这些对象内的一些东西。 到目前为止我的代码如下所示: var channel = channels.related('channels'); channel.forEach(function (entry) { knex('albums') .select(knex.raw('count(id) as album_count')) .where('channel_id', entry.id) .then(function (terms) { var count = terms[0].album_count; entry.attributes["totalAlbums"] = count; }); }); //console.log("I want this to be printed once the foreach is finished"); //res.json({error: false, status: 200, data: channel}); 我怎样才能在JavaScript中实现这样的事情?

bookshelf.js关系有很多错误

在使用书架的hasMany调用中出现以下错误: A valid target model must be defined for the roles hasMany relation Role.js var Data = require('../server-includes/Data'), User = require('./User'); var Role = Data.bookshelf.Model.extend({ tableName: 'roles', users: function() { return this.hasMany(User, 'role_id'); } }); module.exports = Role; user.js的 var Data = require('../server-includes/Data'), Role = require('./Role'); var User = Data.bookshelf.Model.extend({ tableName: 'users', role: function() { […]

如何修复bookshelfjs事务中的嵌套结构

我想在单个书架交易中更新多个数据库表。 我可以使用一些帮助重构我的代码。 我是新来的节点,并没有很好的理解承诺,但下面的嵌套结构不是很漂亮,我希望有一个更干净的方式。 任何帮助,将不胜感激。 function insertUser(user, cb) { bookshelf.transaction(function(t) { var key = user.key; Developer.forge({key: key}) .fetch({require: true, transacting: t}) .then(function(developerModel) { var devID = developerModel.get('id'); Address.forge(user.address) .save(null, {transacting: t}) .then(function(addressModel) { var addressID = addressModel.get('addressId'); Financial.forge(user.financial) .save(null, {transacting: t}) .then(function(financialModel) { var financialID = financialModel.get('financialId'); var userEntity = user.personal; userEntity.addressId = addressID; userEntity.developerId = […]

Bookshelf.js设置属性不在数据库中

我有一个Bookshelf.js模型。 我希望能够设置和获取该数据库中不存在的模型的属性。 例如让我说我有一个模型,看起来像这样: var Domain = bookshelf.Model.extend({ tableName: 'domains', initialize: function() { this.on('creating', this.setDomainName); }, setDomainName: function() { this.set('name', getDomainFromUrl(this.url)); } }); 使用如下所示的架构: knex.schema.createTable('domains', function (table) { table.increments().index(); table.text('name').index(); table.timestamps(); }); 我希望能够保存一个叫做url的属性,然后在保存之前parsing这个url到一个域中。 当我尝试这样的事情: new Domain({url: 'http://someurl.com/foo/bar'}).save() 我收到错误消息: "column \"url\" of relation \"domains\" does not exist" 我看了看。 我无法find任何方式将非持久属性添加到bookhelf.js模型。 我也找不到有关将自定义getter和setter方法添加到bookhelf.js模型的任何信息。 任何帮助或见解,表示赞赏!

在bluebird / bookshelf.js中,tap函数做什么

bookhelf.js tap函数做什么? 我没有在文档中find任何条目 return new Library({name: 'Old Books'}) .save(null, {transacting: t}) .tap(function(model) { //code here } http://bookshelfjs.org/#Bookshelf-subsection-methods

使用.orderBy()对Bookshelf.js结果进行sorting

我正在开发个人项目来学习Node.js + express + Bookshelf.js。 我在哪里构build查询? 特别是,如何在下面的代码中简单地设置“ORDER BY”或“WHERE”? var Accounts = require('../collections/accounts').collection; new Accounts().fetch({ withRelated: ['folders'] }).then(function(collection) { // process results }); 我想学习Bookshelf.js,因为它似乎提供了Laravel的Elequent(PHP)所使用的特性,例如多态关系和子expression式。 但是,我发现文档不是很深入,试图find例子几乎是不可能的。 在此先感谢您的帮助。 知更鸟

如何正确更新Bookshelf.js的模型?

我确定我错过了一些东西,但是我发现Bookshelf API对我来说是无情的混淆。 这是我想要做的: 我有一个名为Radio的模型,其中包含一个名为serial的应用程序分配的string主键,就本例而言,这两个字段分别是example1和example2 。 我已经在模型定义中用idAttribute: 'serial'指定了自定义ID。 我试图用Bookshelf执行upsert(不直接与Knex,在我的实际应用程序,查询变得相当复杂)。 我有插入案例工作,但似乎无法得到更新案例的工作。 为了简单起见,我现在不关心交易或primefaces性。 我很满意得到一个简单的select→插入/更新工作。 具体在这个例子中: 插入设置example1和example2 。 更新设置example1并保持example2不变。 所以我在Bookshelf模型中有这样的一个类,例如“static”方法(“info”包含字段“serial”,“example1”和“example2”): insertOrUpdate: function (info) { return new Radio({'serial':info.serial}).fetch().then(function (model) { if (model) { model.set('example1', info.example1); return model.save({}, { method: 'update', patch: true }) } else { return new Radio({ serial: info.serial, example1: info.example1, example2: info.example2 }).save({}, { method: 'insert' }) […]

Bookshelf.js – 如何保存多对多的关系?

我有麻烦保存数据在“多对多”的关系。 这是我的模特: var CoursePeople = bookshelf.Model.extend({ tableName: 'course_people' }); var Course = bookshelf.Model.extend({ tableName: 'course', users: function(){ return this.belongsToMany(User); } }); var City = bookshelf.Model.extend({ tableName: 'city', users: function(){ return this.hasMany(User); } }); var User = bookshelf.Model.extend({ tableName: 'people', city: function(){ return this.belongsTo(City); }, courses: function(){ return this.belongsToMany(Course); } }); 面临的挑战是,如何将我在数组中获得的ID插入数据库中的联结表(名为“course_people”)? 这是我的代码到目前为止: app.post('/users/', function(req, res) […]

bookshelf.js统计方法

我search高低find如何做基本的计数(如SELECT COUNT(东西)从表)与Bookshelf.js,但无济于事。 有什么我失踪? 或者它只是用于手动select查询? 谢谢!