首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >后缀函数"findAll“在Next.js中未定义

后缀函数"findAll“在Next.js中未定义
EN

Stack Overflow用户
提问于 2022-01-29 10:06:46
回答 1查看 233关注 0票数 0

我正在尝试使用nextjs中的sequelize从数据库中获取数据,模型是成功创建的,迁移也很好。我正在构建端点,但函数似乎没有定义。数据库中的表名是“用户”。

模型: user.js

代码语言:javascript
运行
复制
 "use strict";
const { Model } = require("sequelize");

// Fields to hide in the response
const PROTECTED_ATTRIBUTES = ["password", "token"];

module.exports = (sequelize, DataTypes) => {
  class User extends Model {
    toJSON() {
      // hide protected fields
      let attributes = Object.assign({}, this.get());
      for (let a of PROTECTED_ATTRIBUTES) {
        delete attributes[a];
      }
      return attributes;
    }

    static associate({ Category, Job, Application }) {
      // define association here
      this.hasMany(Category, { foreignKey: "userId", as: "categories" });
      this.hasMany(Job, { foreignKey: "userId", as: "jobs" });
      this.hasMany(Application, { foreignKey: "userId", as: "applications" });
    }
  }
  User.init(
    {
      name: { type: DataTypes.STRING, allowNull: false },
      surname: { type: DataTypes.STRING, allowNull: false },
      email: { type: DataTypes.STRING, allowNull: false, unique: true },
      password: { type: DataTypes.STRING, allowNull: false },
      avatar: { type: DataTypes.STRING, allowNull: true },
      role: { type: DataTypes.STRING, allowNull: false, defaultValue: 3 },
      dob: { type: DataTypes.DATE, allowNull: false },
      description: DataTypes.TEXT,
      cv: DataTypes.TEXT,
    },

    {
      sequelize,
      modelName: "User",
    }
  );
  return User;
};

api/test.js

代码语言:javascript
运行
复制
const { User } = require("../../models");

export default function handler(req, res) {
  //   res.status(200).json({ name: "John Doe" });
  const users = User.findAll({ limit: 10 }); //TypeError: Cannot read property 'findAll' of undefined
  res.status(200).json({ users });
}
EN

回答 1

Stack Overflow用户

发布于 2022-01-29 12:59:45

你应该先加入模型。

代码语言:javascript
运行
复制
const DataTypes = require("sequelize").DataTypes;
const _User = require("./User");
const initModels = (sequelize) => {
const User = _User(sequelize, DataTypes);
 return {
    User
 };
}
module.exports = { initModels };

然后您可以得到模型并调用findAll函数。

代码语言:javascript
运行
复制
const initModels = require("./models/init-models");
...
const models = initModels(sequelize);
models.User.findAll({ where: { username: "..." }});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70904228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档