2016-05-18 10 views
10

Alles funktioniert hier. Das einzige Problem ist, dass in meinem Lenker Datei, ich habe wie diese eine Person, die Aufgaben zu erhalten:Wie Sequelize machen hat viele Assoziationen Kleinbuchstaben in Ansichten

this.Tasks 

Ich würde es eher so aussehen haben:

this.tasks 

Wie würde ich Sequelize anpassen zu tun Sie dies?

Dies ist, was die Wurzel Route meiner app sieht aus wie

project management app

meine Route (es die index.handlebars Datei Rendering):

router.get('/', function(req, res) { 
    models.Person.findAll({ 
    include: [ models.Task ] 
    }).then(function(people) { 
    res.render('index', { 
     user_id: req.session.user_id, 
     email: req.session.user_email, 
     logged_in: req.session.logged_in, 
     people: people 
    }); 
    }); 
}); 

meine index.handlebars Datei:

meine Leute Tabelle Migration:

"use strict"; 

module.exports = { 
    up: function(queryInterface, Sequelize) { 
    return queryInterface 
     .createTable('people', { 
     id: { 
      type: Sequelize.INTEGER, 
      autoIncrement: true, 
      primaryKey: true 
     }, 
     name: Sequelize.STRING, 
     created_at: Sequelize.DATE, 
     updated_at: Sequelize.DATE 
     }); 
    }, 

    down: function(queryInterface, Sequelize) { 
    return queryInterface 
     .dropTable('people'); 
    } 
}; 

meine Aufgaben Tabelle Migration:

"use strict"; 

module.exports = { 
    up: function(queryInterface, Sequelize) { 
    return queryInterface 
     .createTable('tasks', { 
     id: { 
      type: Sequelize.INTEGER, 
      autoIncrement: true, 
      primaryKey: true 
     }, 
     person_id: { 
      type: Sequelize.INTEGER 
     }, 
     task: Sequelize.STRING, 
     created_at: Sequelize.DATE, 
     updated_at: Sequelize.DATE 
     }); 
    }, 

    down: function(queryInterface, Sequelize) { 
    return queryInterface 
     .dropTable('tasks'); 
    } 
}; 

mein person.js Modell:

"use strict"; 

module.exports = function(sequelize, DataTypes) { 
    var Person = sequelize.define("Person", { 
    name: DataTypes.STRING 
    }, { 
    underscored: true, 
    freezeTableName: true, 
    tableName: 'people', 
    classMethods: { 
     associate: function(models) { 
     Person.hasMany(models.Task) 
     } 
    } 
    }); 

    return Person; 
}; 

mein task.js Modell:

"use strict"; 

module.exports = function(sequelize, DataTypes) { 
    var Task = sequelize.define("Task", { 
    task: DataTypes.STRING 
    }, { 
    freezeTableName: true, 
    tableName: 'tasks', 
    classMethods: { 
     associate: function(models) { 
     Task.belongsTo(models.Person, { 
      onDelete: "CASCADE", 
      foreignKey: { 
      allowNull: false 
      } 
     }); 
     } 
    } 
    }); 

    return Task; 
}; 

Antwort

0

mein task.js Modell:

module.exports = function(sequelize, DataTypes) { 
var Task = sequelize.define("Task", { 

Gerade angeben

var task = sequelize.define("task", { 

Hat es nicht löst Sie in Frage?

1

Anstatt den Namen in Kleinbuchstaben für sequelize.define zu verwenden, können Sie den Namen auch über den Alias ​​mit der Option 'as' festlegen. Ex. Task.belongsTo(models.Person, {as: 'task'});. Alternativ können Sie den Alias ​​in der Define-Funktion selbst festlegen. Ex. sequelize.define("Task", attributes, { name : { singular: "task", plural: "tasks" })

1

definieren Modellnamen in Klein als

var Aufgabe = sequelize.define ("Task", {