以下是有關sequelize支持的特性的一些問題(sequelize project site),我想在決定是否使用前清理:sequelize for NodeJS:是否支持這些功能?
鏈接(效率):鏈接多個查詢時,被這些收集到數據庫的一個請求中(作爲一批操作),還是每個請求都單獨發送?鏈接(成功/錯誤):鏈接多個查詢時,何時發出成功事件,發生什麼錯誤?只有在全部操作成功後才發出「成功」?如果發生錯誤,它是否會回滾所有操作(即將鏈接的操作視爲交易)
過濾關聯:說一個
Crowd
對象的關係爲Crowd.hasMany(Person)
。您可以通過執行crowd.getPersons()
來獲取所有關聯的人員,但可以選擇其中的一個子集,例如crowd.getPersons({where: { age: 30 }})
?入門相關聯的是由兩個或多個步驟相關的對象:假設一個
Crowd
對象作爲關係Crowd.hasMany(Person)
和Person
具有關係Person.hasMany(Pet)
。是否有可能通過執行諸如crowd.getPersons().getPets()
之類的東西來獲得人羣中的所有寵物,並且如果是這樣,它會作爲多個請求發送到數據庫,還是隻發送一個請求?「深」 對象:我想確定一個人作爲對象:
sequelize.define('Person', { name: { first: <a string>, last: <a string> } });
這可以嗎? (請注意,名稱不會是數據庫表的列,但第一個和最後一個將是)
「計算」對象:是否可以將字段添加到從其他字段計算的對象物體?例如:
sequelize.define('Person', { name: { first: <a string>, last: <a string>, full: <name.first + ' ' + name.last> // <-- this field } });
從而使
name.full
場實際上並沒有存儲在數據庫中(這是浪費空間),而只是從其他兩個計算出來的?
所以對#2,如果沒有與請求的一個錯誤,它會回滾所有請求(如將在交易發生)?還是鏈接的請求不被視爲交易? – bigpopakap 2012-02-29 02:58:10
他們不被視爲一個交易,但愉快地彼此分開執行,並返回所有發生的錯誤 – sdepold 2012-02-29 06:31:02
這將是很好,而不是簡單地有能力添加實例方法,如果你可以定義getters和setters是序列化對象時使用。 – freakTheMighty 2014-08-14 23:13:32