簡體   English   中英

如何使sequelize在視圖中有許多關聯小寫

[英]How to make sequelize has many association lowercase in views

一切都在這里工作。 唯一的問題是,在我的手柄文件中,我必須得到一個人的任務,如下所示:

this.Tasks

我寧願讓它看起來像這樣:

this.tasks

我如何定制Sequelize呢?

這就是我的應用程序的根路徑(它呈現index.handlebars文件)

項目管理應用

我的路線:

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
    });
  });
});

我的index.handlebars文件:

  {{#each people}}
    <li>
      {{this.name}}
      {{#if ../logged_in}}
        <a href="/people/{{this.id}}/destroy"> destroy</a>
      {{/if}}
      <ul>
        {{#if ../logged_in}}
          <li>
            <form action="/people/{{this.id}}/tasks/create" method="POST" style="display: inline">
              <input type="text" name="task" placeholder="add task here">
              <input type="submit" value"assign task">
            </form>
          </li>
        {{/if}}

        {{#each this.Tasks }}
          <li>
            {{this.task}}
            {{#if ../../logged_in}}
              <a href="/people/{{this.person_id}}/tasks/{{this.id}}/destroy">destroy</a>
            {{/if}}
          </li>
        {{/each}}
      </ul>
    </li>
  {{/each}}

我的人員表遷移:

"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');
  }
};

我的任務表遷移:

"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');
  }
};

我的person.js模型:

"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;
};

我的task.js模型:

"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;
};

您也可以使用'as'選項通過別名設置名稱,而不是使用sequelize.define的小寫名稱。 防爆。 Task.belongsTo(models.Person, {as: 'task'}); 或者,您可以在define函數本身中設置別名。 防爆。 sequelize.define("Task", attributes, { name : { singular: "task", plural: "tasks" })

將模型名稱以小寫形式定義為

var Task = sequelize.define(“task”,{

我的task.js模型:

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

只需指定

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

它沒有解決你的問題嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM