在带有mysql和sequelize的nodejs中,我使用findAll函数通过控制器呈现页面,并包括两个关联表。 然后,我渲染一个视图页面。 我浏览了列出主表中字段数据的表,并希望从另一个表中添加关联日期的价格。 具体来说,我将Sales表中的saleId存储在表Project中。 当我列出Project的行时,我想在Sales中包含与项目foriegn键中存储的sales中对应的名称。

我将在下面包含代码,但结果是:TypeError:E:\\ cjrfull \\ views \\ index.ejs:26 24 | 25 | <%= project.address%>,<%= project.csz%>

26 | 销售代表:<%= project.sales.name%>
27 | 项目经理:<%= project.supervisor.name%> </ small>-> 28 | 29 |

无法在eval读取未定义的属性“名称”(在编译时为eval(E:\\ cjrfull \\ node_m

From app.js:
const sequelize = require('./util/database');
const Project = require('./models/project');
const Sales = require('./models/sales');
const Supervisor = require('./models/supervisor');

...
Project.belongsTo(Sales);
Sales.hasMany(Project);
Project.belongsTo(Supervisor);
Supervisor.hasMany(Project);

from model Project.js:
const Project = sequelize.define('project', {
    id: {
        type: Sequelize.INTEGER,
        autoIncrement: true,
        allowNull: false,
        primaryKey: true
    },
    projectNo: Sequelize.STRING,
    owner1Fn: Sequelize.STRING,
    owner1Ln: Sequelize.STRING,
    owner2Fn: Sequelize.STRING,
    owner2Ln: Sequelize.STRING,
    address: {
        type: Sequelize.STRING,
        allowNull: false
    },
    csz: Sequelize.STRING,
});

from model Sales.js:
const Sales = sequelize.define('sales', {
    id: {
        type: Sequelize.INTEGER,
        autoIncrement: true,
        allowNull: false,
        primaryKey: true
    },
    name: {
        type: Sequelize.STRING,
        allowNull: false
    }
});

from Controller:
exports.getIndex = (req, res, next) => {
    Project.findAll({
            include: [{
                model: Sales
            }],
            include: [{
                model: Supervisor
            }]
        })
        .then(projects => {
            res.render('index', {
                projs: projects,
                pageTitle: 'Index',
                path: '/'
            });
        })
        .catch(err => console.log(err));
};
from View file Index.ejs:
<% for (let project of projs) { %>
                            <a href="/project/<%= project.id %>" class="list-group-item list-group-item-action active" style="background-color: darkgreen" style="border-color: darkgreen">
                                <div class="d-flex w-100 justify-content-between">
                                    <h5 class="mb-1">
                                        <%= project.owner1Fn %>
                                            <%= project.owner1Ln %><span> & </span>
                                                <%= project.owner2Fn %>
                                                    <%= project.owner2Ln %>
                                    </h5>
                                    <small>Job: <%= project.id %>  Project: <%= project.projectNo %></small>
                                </div>
                                <p class="mb-1">
                                    <%= project.address %>, <span><%= project.csz %></p>
                            <small>Sales Rep: <%= project.sales.name %> </small><br>
                            <!-- <small>Project Manager: <%= project.supervisor.name %></small> -->
                            </a>
                            <br>
                        <% } %>

#1楼 票数:0

问题在于您如何包括关联的模型。 您需要将它们添加到同一阵列。

Project.findAll({
            include: [{
                model: Sales
            }, {
                model: Supervisor
            }]
        })

从文档:

渴望使用左联接加载的关联的列表。 受支持的是{包括:[Model1,Model2,...]}

  ask by Todd translate from so

未解决问题?本站智能推荐:

1回复

如何从表格中获取每个ID的最新状态?

请考虑下表: 我想从条形表中获取最近更新的foo_id和状态,并且foo_id也包含多个状态 我尝试了以下查询: 在其他计算机上收到以下错误: 未处理的拒绝SequelizeDatabaseError:SELECT列表的表达式#2不在GROUP BY子句中,并且包
1回复

sequelize left join 也返回关联表的数据

我有两个表,因此模型和关联将它们定义如下。 因此, matched_technicians有多个具有相同 ID 的工作,但仅记录了assigned_job的job_id 我希望从中获取所有这些记录matched_technicians它不具有任何记录job_id在assigned_jobs
1回复

Sequelize MySQL - 连接同一个关联表中的两行

我遇到了一个涉及 Sequelize MySQL 的棘手问题。 我有两个模型: Calibration和Device ,分别关联多对一。 现在的重点是我想查询一个Device列表,加入Calibration ,每个设备项都有两个日期属性,引用两个关联的校准,一个是最近的日期,另一个是未来最近的日
1回复

如何将单个 SQL OR 运算符应用于 Sequelize 中的表及其关联表?

我想在其中查找带有某个子字符串的产品(搜索产品),即,搜索字符串与关联表中的product.name OR product.description OR { 匹配( category.name OR category.description ) } OR {在其他关联 (hasMany) 表 ( s
3回复

BelongToMany与Sequelize表无关

我试图通过一个我已在mySql中创建的新表来关联2个表。 然后我可以从API获取所需的数据。 与新链接的2个表是用户和国家。 用户可以访问许多国家/地区。 许多用户都可以访问一个国家/地区。 这是我的模型User.js: 然后这是我的模型Country.js: 这是
1回复

Sequelize.js无法在WHERE子句中为关联表字段生成条件

我在下面的代码中使用sequelize.js模块在Node.js中 但是它产生与想要实现不同的查询 如果我更改自定义条件,则its not working 然后,node.js引发错误Unhandled rejection SequelizeDatabaseError:
1回复

如何使用Sequalize生成的模型获取关联数据?

我一直在开发具有MySQL支持且以Sequelize作为ORM的NodeJs后端应用程序。 我试图通过调用我创建的API来获取数据。 它发送数据作为响应。 但是它不包含与外键关系相关的关联对象。 我已经有一个MySQL数据库,并且正在使用sequelize ORM,我使用了seque
1回复

如何在SequelizeJS中删除已删除对象的所有关联数据?

更新:我将“ onDelete:'级联'”添加到我的MenuTranslation模型中。 但这次它的工作方式类似于onDelete:'null'