2010-01-03 105 views
0

我正在寫一個Drupal模塊來處理從CSV文件創建新節點。我一直在做的方式是,用戶提供一個節點類型,然後我的模塊進入數據庫查找該節點的字段。Drupal:在處理節點類型信息時避免數據庫?

用戶將節點字段與CSV字段相匹配後,我想驗證數據。這需要找出節點字段的類型。我不完全確定如何做到這一點。 (也許看看content_node_field表?)

然後,我必須創建節點。目前,該模塊創建一個新的對象,將其填充必要的數據並保存。

但是,如果我能完全抽象出數據庫並避免處理它呢?如果我向用戶詢問這種已存在的節點,該怎麼辦?我可以node_load()這個節點,並用它來確定節點字段。當需要保存節點時,我可以使用「種子」節點來確定新節點的結構。

一個缺點是:這需要至少有一個這種類型的節點在模塊可以運行前存在。

此外,這會比直接訪問數據庫慢嗎?

我擔心隨着時間的推移,數據庫名稱可能會改變,而內容類型可能會在多個表中定義。通過僅從預先存在的節點進行工作,我可以解決許多這些問題。對?

回答

0

無論如何,node_load肯定會觸及數據庫?節點字段存儲在數據庫中,所以如果您需要獲取它們,有時您必須與數據庫交談。鑑於Drupal上的一些頁面加載調用了數百(甚至數千)個數據庫查詢,我真的不用擔心一兩個!

表名不太可能發生變化,至少在Drupal的版本之間架構應該保持固定。如果可能的話,使用API​​來獲取所需的數據會是更好的做法,並且這可以更好地防止更改。我不知道這是否可能。

+0

是的,我知道我最終必須打到數據庫,這只是我自己寫SQL還是使用已經寫好的數據的問題。 – 2010-01-03 22:51:16