Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
    blah238
    @blah238
    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
    @ackerdev
    ah, good catch.
    Nick Acker
    @ackerdev
    @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.
    darkghoul79
    @darkghoul79
    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
    @rbhalla
    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
    @rbhalla
    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 :)
    Gratian
    @Gratiandev
    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 = ?
    simonecogno
    @simonecogno
    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
    @nitish24p
    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
    tgriesser/bookshelf#1544
    Any help here would be nice :)
    darkghoul79
    @darkghoul79
    Been trying to use .through and seems like it is not using the otherKey.. instead it is using idAttribute.. anyway to override?

    Model Setup

    orders
     - id
     - buyerId
    
    items
     - id
     - orderId
     - ownerId
    
    users
     - 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')
    }
    darkghoul79
    @darkghoul79
    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`
    darkghoul79
    @darkghoul79
    any help/alternative solution would be nice.
    darkghoul79
    @darkghoul79

    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
    @twist900
    hi, is it possible to use bookshelf with oracle db?
    simonecogno
    @simonecogno

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

    app.database.Model.extend({
            tableName: 'variation_score',
    
            variations: function() {
                this.belongsToMany(app.models.Variation)
            }
    }

    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=> {
                             console.log(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
    @olalonde
    Hola
    What's the recommended way to store data on models that shouldn't be persisted?
    directly as a property?
    tomoat
    @tomoat
    How use where …in in bookshelf ?
    Georgy Shabunin
    @twist900
    @tomoat should be where('column_name', 'in', ['stuff1', 'yo'])
    or .query((qb) => qb.whereIn('column_name', ['stuff1', 'stuff2']))
    Georgy Shabunin
    @twist900
    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
    @JasonShin
    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,
    }

    structure

    or would you just normalize it to multiple tables? (i really like jsonb though)
    Salvador López Mendoza
    @sallomendo
    Hi guys
    Salvador López Mendoza
    @sallomendo
    Position.forge({
      coordinates: st.point(-99.133208, 19.432608)
    }).save().then((result) => {
      console.log(result.get('coordinates'))
    })
    It returns
    Raw {
      client:
       Client_PG {
         config:
          { client: 'pg',
            connection: [Object],
            migrations: [Object],
            seeds: [Object] },
         connectionSettings: { database: 'wizelingo_api_development' },
         driver:
          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:
          Pool {
            _factory: [Object],
            _inUseObjects: [Array],
            _draining: false,
            _waitingClients: [Object],
            _availableObjects: [Array],
            _asyncTestObjects: [],
            _count: 3,
            _removeIdleTimer: [Object],
            _removeIdleScheduled: true },
         valueForUndefined:
          Raw {
            client: [Circular],
            sql: 'DEFAULT',
            bindings: undefined,
            _wrappedBefore: undefined,
            _wrappedAfter: undefined,
            _debug: undefined },
         _events:
          { 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
    @corysimmons
    Is it possible to do a hasOne through with Bookshelf?
    Arye Shalev
    @pantchox
    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
    Leonardo Silveira
    @sombriks
    Hi everyone, please take a look at my new article comparing bookshelf with other ORM's: https://sombriks.com.br/#/blog/0011-about-jpa-sequelize-and-bookshelf.md
    Mieszko Manijak
    @yellowBirdy
    Hey Hey, Anybody here?
    Adil Osama Rasheed
    @w3villa-adil
    Hello All
    Mieszko Manijak
    @yellowBirdy
    awfully quite here