modelVisitor.js 921 B

12345678910111213141516171819202122232425262728293031323334
  1. function visitModels(models, modelClass, visitor) {
  2. doVisit(models, modelClass, null, null, visitor);
  3. }
  4. function doVisit(models, modelClass, parent, rel, visitor) {
  5. if (Array.isArray(models)) {
  6. visitMany(models, modelClass, parent, rel, visitor);
  7. } else if (models) {
  8. visitOne(models, modelClass, parent, rel, visitor);
  9. }
  10. }
  11. function visitMany(models, modelClass, parent, rel, visitor) {
  12. for (let i = 0, l = models.length; i < l; ++i) {
  13. visitOne(models[i], modelClass, parent, rel, visitor);
  14. }
  15. }
  16. function visitOne(model, modelClass, parent, rel, visitor) {
  17. if (model) {
  18. visitor(model, modelClass, parent, rel);
  19. }
  20. const relations = modelClass.getRelationArray();
  21. for (let i = 0, l = relations.length; i < l; ++i) {
  22. const relation = relations[i];
  23. doVisit(model[relation.name], relation.relatedModelClass, model, relation, visitor);
  24. }
  25. }
  26. module.exports = {
  27. visitModels
  28. };