【问题标题】:Include unexpected. Element has to be either a Model, an Association or an object包括意外。元素必须是模型、关联或对象
【发布时间】:2017-10-11 19:31:44
【问题描述】:

我在尝试使用 nodeJs 配置 postrgres 时遇到问题,我遵循了这个 tutorial 并且我收到了一个错误,它没有说明什么是错误的:

这里是 堆栈跟踪

Unhandled rejection Error: Include unexpected. Element has to be either a Model, an Association or an object.
    at C:\Users\FilipeCosta\desktop\FloraApp\server\node_modules\sequelize\lib\model.js:1976:15
    at Array.map (native)
    at conformOptions (C:\Users\FilipeCosta\desktop\FloraApp\server\node_modules\sequelize\lib\model.js:1941:39)
    at Model.<anonymous> (C:\Users\FilipeCosta\desktop\FloraApp\server\node_modules\sequelize\lib\model.js:700:7)
    at Model.tryCatcher (C:\Users\FilipeCosta\desktop\FloraApp\server\node_modules\sequelize\node_modules\bluebird\js\main\util.js:26:23)
    at Promise._settlePromiseFromHandler (C:\Users\FilipeCosta\desktop\FloraApp\server\node_modules\sequelize\node_modules\bluebird\js\main\promise.js:503:31)
    at Promise._settlePromiseAt (C:\Users\FilipeCosta\desktop\FloraApp\server\node_modules\sequelize\node_modules\bluebird\js\main\promise.js:577:18)
    at Promise._settlePromiseAtPostResolution (C:\Users\FilipeCosta\desktop\FloraApp\server\node_modules\sequelize\node_modules\bluebird\js\main\promise.js:244:10)
    at Async._drainQueue (C:\Users\FilipeCosta\desktop\FloraApp\server\node_modules\sequelize\node_modules\bluebird\js\main\async.js:128:12)
    at Async._drainQueues (C:\Users\FilipeCosta\desktop\FloraApp\server\node_modules\sequelize\node_modules\bluebird\js\main\async.js:133:10)
    at Immediate.Async.drainQueues (C:\Users\FilipeCosta\desktop\FloraApp\server\node_modules\sequelize\node_modules\bluebird\js\main\async.js:15:14)
    at runCallback (timers.js:672:20)
    at tryOnImmediate (timers.js:645:5)
    at processImmediate [as _immediateCallback] (timers.js:617:5)

我的模特:

var express = require('express');
var models = require('../models');
var router = express.Router();

/* GET users listing. */
router.get('/', function (req, res, next) {
  var User = models.User;
  User.findById(1).then(function (user) {
    console.log(user);
  })
});

module.exports = router;

我的路由器:

“使用严格”;

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

  return User;
};

【问题讨论】:

  • 教程链接失效
  • 很好的向下翻页 s:/
  • 你是怎么解决这个问题的?

标签: javascript node.js postgresql sequelize.js sequelize-cli


【解决方案1】:

您的模型路径的深度可能有问题,请先检查这是否是正确的路径。或者,您可以按照here 的建议管理您的 require 导入,这将非常方便和有用。

【讨论】:

    【解决方案2】:

    models 导出带有参数(sequelize, DataTypes) 的函数,但调用它时没有带上提供的参数。您首先需要使用正确的参数调用模型函数,然后将返回的模型分配给变量。最丑的情况,你可以这样写:

    var User = models(sequelize, DataTypes).User;

    ...在您的路由器中初始化sequelize 和DataTypes 之后。但您可能应该在模型文件中执行此操作,并重组该文件以具有初始化程序。

    【讨论】:

      猜你喜欢
      • 2019-09-17
      • 2020-09-28
      • 2019-02-09
      • 2012-03-05
      • 2016-09-15
      • 1970-01-01
      • 2014-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多