2015-04-03 10 views
5

Bir Bookshelf.js modelim var. Veritabanında kalıcı olmayan bu modelin özelliklerini ayarlayıp alabilmek istiyorum.Bookshelf.js set özniteliği veritabanında değil

knex.schema.createTable('domains', function (table) { 
    table.increments().index(); 
    table.text('name').index(); 
    table.timestamps(); 
    }); 

Ben url adlı bir öznitelik tasarruf edebilmek istiyorum: şöyle bir şema ile

var Domain = bookshelf.Model.extend({ 
     tableName: 'domains', 
     initialize: function() { 
     this.on('creating', this.setDomainName); 
     }, 
     setDomainName: function() { 
     this.set('name', getDomainFromUrl(this.url)); 
     } 
    }); 

: Mesela

Şöyle bir model var diyelim Daha sonra, daha sonra, kaydetmeden önce URL'yi bir etki alanına ayırın.

new Domain({url: 'http://someurl.com/foo/bar'}).save() 

şu hata mesajını alıyorum:

"column \"url\" of relation \"domains\" does not exist" 

ben baktım ve baktım

Böyle bir şey çalıştığınızda. Bir bookshelf.js modeline kalıcı olmayan nitelikler eklemenin bir yolunu bulamıyorum. Ayrıca bir bookshelf.js modeline özel alıcı ve ayarlayıcı yöntemleri ekleme hakkında hiçbir şey bulamadım.

Herhangi bir yardım veya içgörü takdir edilir!

cevap

6

Telefonumda, kısa cevabı affedin, ancak istediğiniz şey 'sanal' veya 'bileşik' alanlar olarak adlandırılıyor.

https://github.com/tgriesser/bookshelf/wiki/Plugin:-Virtuals

Her veritabanı mapper bunları vardır, ama onlar denir bilmiyorum ne zaman bir çözüm google anlaşılır zordur.

+1

OMG, teşekkür ederim! Bu tam ihtiyacım olan şey. Haklısın, ne aradıklarını bilmeden onu asla bulamayabilirim. – nmajor

İlgili konular