Where communities thrive

  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
Repo info
    Nick Acker
    Yeah, I've seen that one, and it's not too shabby but not really quite enough for what I'm looking for
    In what way (just curious, like I said not familiar with it myself)?
    Nick Acker
    As far as I can tell, it doesn't allow you to rename the model attributes, and the validation is a little awkward/limited
    and afaik you still need another plugin for whitelisting which isn't terrible but isn't great either
    Looks like you can pass a column option to the field definition which sets which DB column the attribute corresponds to: http://bookshelf-schema.readthedocs.io/en/latest/fields.html
    Nick Acker
    ah, good catch.
    Nick Acker
    @blah238 After tinkering with it a bit more, I'm still left unsatisfied with the schema plugin. I still don't much care for the api, and there are some odd behaviors like JSON.stringify(model) and model.toJSON() no longer being equivalent (bookshelf-schema seems to overwrite toJSON, but doesn't do so correctly causing the schema-fields to not actually be represented if using stringify. Just doesn't feel like a really well made plugin, unfortunately. I might look into making something of my own at this point.
    how is computed fields handled on bookshlef?
    for example on ratings. wanted to get review count, total reviews, etc. but i wanted those info to be an attribute of the model. is that even possible? tried using virtuals plugin but mostly works of getters/setters.
    any suggestions would be greatly appreciated. thanks.
    Roshan Bhalla
    Is there a nice way to have the relations have join conditions? I.e. I'd love to be able to do something like ModelA.hasOne(ModelB).where('type', 'foo)
    Roshan Bhalla
    It's possible this was the wrong forum for a question, and I haven't been able to solve it so I've reposted the question at http://stackoverflow.com/questions/42472384/join-conditions-on-relationships
    If you know how it'd really help :)
    Hi, I'm new to knex and I have a problem, could anyone translate for me this sql query into knex query? SELECT * FROM password_resets LEFT JOIN users on users.username = ? WHERE user = users.id AND code = ?
    It's easy with knex knex().select('*').from('pasw_reset as pr').leftJoin('users', 'users.username', 'passw_reset.username').where('pr.user.id', 'users.id').where('pr.user.code', 'users.code').toString();
    Result in "select * frompasw_resetasprleft joinusersonusers.username=passw_reset.usernamewherepr.user.id= 'users.id' andpr.user.code= 'users.code'"
    I actually having problem on writing the same query on bookshelf by using the relations without using knex joins
    Nitish Phanse
    Hey i had the following question
    a withRelated : table-name does not create an explicit left join instead it chains the ids found in the parent table as a select * from table-name where id in [Huge array of ids]. So there are 2 queries being fired. Isnt this a performance issue..
    i've raised an issue on github too explaining my problem in detail
    Any help here would be nice :)
    Been trying to use .through and seems like it is not using the otherKey.. instead it is using idAttribute.. anyway to override?

    Model Setup

     - id
     - buyerId
     - id
     - orderId
     - ownerId
     - id
     - name

    In orders model i have:

    buyer() { // which works perfectly
      return this.belongsTo('User' , 'buyerId', 'id')
    owner() { // which does not work
      return this.belongsTo('User' , 'buyerId', 'id').through("Items"), 'id', 'orderId')
    the owner method generates this sql:
    select `users`.*, `items`.`id` as `_pivot_id`, `items`.`ownerId` as `_pivot_ownerId` from `users` inner join `items` on `items`.`ownerId` = `users`.`id` inner join `orders` on `items`.`id` = `orders`.`id` where `orders`.`id` in (?)
    which is wrong.. notice the join between orders and items.. should have been
    inner join `orders` on `items`.`orderId` = `orders`.`id`
    and not inner join `orders` on `items`.`id` = `orders`.`id`
    any help/alternative solution would be nice.

    I was able to tweak it in order generate the right query,

    owner() {
        // return this.belongsTo('User', 'buyerId', 'id') .through("Items"), 'id', 'orderId')
        const relation = this.belongsTo('User', 'buyerId', 'id') .through("Items"), 'id', 'orderId')
        relation.relatedData.throughIdAttribute = 'orderId'
        return relation

    But unfortunately, its not returning owner info/record.

    Georgy Shabunin
    hi, is it possible to use bookshelf with oracle db?

    I have some issue with fetching related models of a model.
    The model definition is this:

            tableName: 'variation_score',
            variations: function() {

    And I would like to fetch the variation later in my code like this:

    new app.models.VariationScore({id: variationScore.id})
                    .fetch({withRelated:{variations: function (qb) { qb.column('name') }}})
                    .then(viariationScoreWithVariations=> {

    But the related models are not fetched correctly. Any ideas how to do it?

    I also tried:

    .fetch({withRelated: 'variations'})
    .fetch({withRelated: ['variations']})

    But also don't work.

    Oli Lalonde
    What's the recommended way to store data on models that shouldn't be persisted?
    directly as a property?
    How use where …in in bookshelf ?
    Georgy Shabunin
    @tomoat should be where('column_name', 'in', ['stuff1', 'yo'])
    or .query((qb) => qb.whereIn('column_name', ['stuff1', 'stuff2']))
    Georgy Shabunin
    Does anyone know how to deal with the following problem. I eager load related models using withRelated in fetch, and it works perfectly - thanks bookshelf/knex team. My question is how can I eager load only certain relations, instead of all. Example case: I need to fetch an Author with only his latest published Book. Using .fetch(withRelated: [{ books: (qb) => qb.max('publish_date') }] ) will run .max on all of the Books tables, but I need max value between those related to that Author.
    or for example how can I limit the amount of eager loaded relations?
    Jason Shin
    Guys, when you are using jsonb field, is it possible to set some required properties of the json object through bookshelf?

    for example, when you are inserting a new row on a table with a jsonb field,
    I'd like to make it mandatory for each jsonb to have

      a: string,
      b: int,


    or would you just normalize it to multiple tables? (i really like jsonb though)
    Salvador López Mendoza
    Hi guys
    Salvador López Mendoza
      coordinates: st.point(-99.133208, 19.432608)
    }).save().then((result) => {
    It returns
    Raw {
       Client_PG {
          { client: 'pg',
            connection: [Object],
            migrations: [Object],
            seeds: [Object] },
         connectionSettings: { database: 'wizelingo_api_development' },
          PG {
            domain: null,
            _events: {},
            _eventsCount: 0,
            _maxListeners: undefined,
            defaults: [Object],
            Client: [Object],
            Query: [Object],
            Pool: [Object],
            _pools: [],
            Connection: [Object],
            types: [Object],
            native: [Getter] },
         __cid: 'client0',
          Pool {
            _factory: [Object],
            _inUseObjects: [Array],
            _draining: false,
            _waitingClients: [Object],
            _availableObjects: [Array],
            _asyncTestObjects: [],
            _count: 3,
            _removeIdleTimer: [Object],
            _removeIdleScheduled: true },
          Raw {
            client: [Circular],
            sql: 'DEFAULT',
            bindings: undefined,
            _wrappedBefore: undefined,
            _wrappedAfter: undefined,
            _debug: undefined },
          { start: [Function],
            query: [Function],
            'query-error': [Function],
            'query-response': [Function] },
         _eventsCount: 4,
         makeKnex: [Function: makeKnex],
         version: '9.6.2' },
      sql: 'ST_Point(?, ?)',
      bindings: [ -99.133208, 19.432608 ],
      _wrappedBefore: undefined,
      _wrappedAfter: undefined,
      _debug: undefined }
    Shouldn't the model be populated with the result of the insertion?
    Cory Simmons
    Is it possible to do a hasOne through with Bookshelf?
    RYeah Sh
    Hi, i really like bookshelf, but i think the documentation is very poor
    you would say i should do PR prob but i am still learning, and the examples are not intuitive and so clear what each method purpose is, i needed to google "bookshelf tutorial" examples etc to find.
    anyway i am not complaining i am just saying that its a shame because it looks very well structured but not so many real world examples