2010-01-03 4 views
0

J'écris un module Drupal qui traite de la création de nouveaux noeuds à partir de fichiers CSV. La façon dont je l'ai fait actuellement, l'utilisateur fournit un type de nœud, et mon module va à la base de données pour trouver les champs pour ce nœud. Une fois que l'utilisateur a mis en correspondance les champs de nœud avec les champs CSV, je souhaite valider les données. Cela nécessite de connaître les types de champs de noeud. Je ne suis pas entièrement sûr de savoir comment faire cela. (Peut-être regarder le tableau content_node_field?)Drupal: Évitez les bases de données lorsque vous traitez des informations de type de noeud?

Ensuite, je dois créer les nœuds. Actuellement, le module crée un nouvel objet StdClass, le remplit avec les données nécessaires et l'enregistre.

Mais que se passe-t-il si je peux complètement faire abstraction de la base de données et éviter d'y faire face? Que faire si j'ai demandé à l'utilisateur un noeud de ce type qui existe déjà? Je pourrais node_load() ce noeud, et l'utiliser pour déterminer les champs de noeud. Quand viendra le temps d'enregistrer les nœuds, je pourrais utiliser le nœud "seed" pour déterminer quelle devrait être la structure des nouveaux nœuds. Un inconvénient: cela nécessite qu'au moins un noeud de ce type existe avant que le module puisse fonctionner.

Aussi, serait-ce plus lent que d'accéder directement à la base de données?

Je crains qu'avec le temps, les noms de base de données puissent changer et que les types de contenu puissent être définis sur plusieurs tables. En travaillant uniquement à partir d'un nœud pré-existant, je pourrais contourner plusieurs de ces problèmes. Droite?

Répondre

0

De toute évidence, node_load va toucher la base de données? Les champs de nœud sont stockés dans la base de données, donc si vous avez besoin de les obtenir, vous devez à un moment donné parler à la base de données. Étant donné que certaines charges de pages sur Drupal invoquent des centaines (voire des milliers!) De requêtes de base de données, je ne m'inquiéterais pas vraiment d'en avoir une ou deux!

Il est peu probable que les noms de tables changent et le schéma doit rester au moins fixe entre les versions de Drupal. Il serait préférable d'utiliser l'API pour obtenir les données que vous voulez si cela est possible, et cela vous donnerait une meilleure protection contre les changements. Je ne sais pas si c'est possible.

+0

ouais, je sais que je devrai finir le db par la suite, c'est juste une question de savoir si je dois ou non écrire SQL moi-même ou utiliser ce qui a déjà été écrit. –

Questions connexes