【问题标题】:object SequelizeInstance being pass对象 SequelizeInstance 正在传递
【发布时间】:2015-03-21 17:33:30
【问题描述】:

我很困惑,希望你能帮助我。我正在使用 express.js 在 node.js 中构建一个应用程序,并为我的 ORM 续集。我用以下代码创建了一个模型:

"use strict";

module.exports = function(sequelize, DataTypes) {
  var User = sequelize.define("User", {
    username: DataTypes.STRING
  });

  return User;
};

我的路线是这样的:

router.get('/', function (req, res) {
  models.User.findAll({ }).then(function(users) {
    res.render('index', {
      title: 'Project Insight',
      users: users
    });
  });
})

我正在为我的模板使用 EJS:

<ul>
    <% for(var i=0; i<users.length; i++) {%>
      <li><%= users[i] %></li>
    <% } %>
</ul>

我在视图中得到的输出是这样的:

[object SequelizeInstance]
[object SequelizeInstance]
[object SequelizeInstance]
[object SequelizeInstance]

我希望能够从数据库中提取名称,但我很困惑为什么会给出这样的结果。如果您需要我提供任何信息,请告诉我。我对这一切都很陌生,我处于停滞状态。提前感谢您的所有帮助。

【问题讨论】:

  • 我的第一个猜测是你需要使用users[i].username
  • ^ 这是正确的,你应该回答它。此外,这会起作用:users[i].dataValues.username 感谢您的帮助。
  • 不推荐使用dataValues attr。将对象发送到模板系统的最佳方法是直接使用属性,或使用.toJSON() 方法。 Check N.B.

标签: javascript node.js express sequelize.js


【解决方案1】:

可能对其他人有帮助:

model.findAll({where}).
  .then(res => {
    return res.map(row => {
      return row.dataValues
    });
  })

返回的对象列表如下:

[
  {
    column1: value1,
    column2: value2,
    ...
    columnN: valueN
  }
]

【讨论】:

    【解决方案2】:

    尝试更换EJS模板:

    <ul>
        <% for(var i=0; i<users.length; i++) {%>
          <li><%= users[i].username %></li>
        <% } %>
    </ul>
    

    【讨论】:

      猜你喜欢
      • 2016-02-10
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 2016-04-23
      • 1970-01-01
      • 1970-01-01
      • 2019-10-06
      • 1970-01-01
      相关资源
      最近更新 更多