首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未定义sequelize - Sequelize并寄存

未定义sequelize - Sequelize并寄存
EN

Stack Overflow用户
提问于 2016-11-23 20:43:20
回答 3查看 23.8K关注 0票数 3

我是node的新手。

我正在尝试用cosign在我的简单应用程序中添加Sequelize。

config/db.js

代码语言:javascript
复制
var Sequelize = require('sequelize');

var sequelize = new Sequelize('test', 'root', '', {

host: 'localhost',
dialect: 'mysql',

 pool: {
max: 5,
min: 0,
idle: 10000
}

});

module.exports = function () {
return sequelize
}

model/user.js

代码语言:javascript
复制
var Sequelize = require('sequelize');

module.exports = function(application, req, res){

var User = sequelize.define('user', {
username: {
type: Sequelize.STRING,
}
}, {
freezeTableName: true // Model tableName will be the same as the model name
});

User.create({ username: 'fnord'})
.then(function() {
console.log('criado!');
})
}

config/server.js

代码语言:javascript
复制
...
consign()
.include('app/routes')
.then('config/db.js')
.then('app/models')
.then('app/controllers')
.into(app);

module.exports = app;

我收到错误用户varsequelize is not defined´ on= sequelize.define(' User ',{`

我哪里做错了?

EN

回答 3

Stack Overflow用户

发布于 2016-11-23 22:33:14

在moldes文件夹中创建一个index.js文件,如下所示:

代码语言:javascript
复制
"use strict";

var fs        = require("fs");
var path      = require("path");
var Sequelize = require("sequelize");

var sequelize = new Sequelize(global.config.dbConfig.name, global.config.dbConfig.user, global.config.dbConfig.password, {
  host: global.config.dbConfig.host,
  port: global.config.dbConfig.port,
  pool: false
});

var db = {};

fs.readdirSync(__dirname)
  .filter(function(file) {
    return (file.indexOf(".") !== 0) && (file !== "index.js");
  })
  .forEach(function(file) {
    var model = sequelize.import(path.join(__dirname, file));
    db[model.name] = model;
  });

Object.keys(db).forEach(function(modelName) {
  if ("associate" in db[modelName]) {
    db[modelName].associate(db);
  }
});

db.sequelize = sequelize;

module.exports = db;

在你的user.js中做一些类似这样的事情:

代码语言:javascript
复制
module.exports = function(sequelize, DataTypes) {
  var User = sequelize.define("User", {
    username: {
      type: DataTypes.STRING
    }, 
    {
      freezeTableName: true // Model tableName will be the same as the model name 
    }
  });

  return User;
}

http://docs.sequelizejs.com/en/1.7.0/articles/express/

票数 3
EN

Stack Overflow用户

发布于 2016-11-23 21:01:15

您应该要求将实例序列化为用户模型

config/db.js

module.exports = sequelize;

model/user.js

代码语言:javascript
复制
var Sequelize = require('sequelize');
var sequelize = require('../config/db.js'); //sequelize instance

module.exports = function(application, req, res){

var User = sequelize.define('user', { 
...
票数 1
EN

Stack Overflow用户

发布于 2019-03-21 07:51:18

Sequelize-CLI对于使用Sequelize的项目来说是一个非常有用的工具。当你下载的时候

代码语言:javascript
复制
npm install -g sequelize-cli

然后,您可以运行

代码语言:javascript
复制
sequelize init

上面的命令将为您写出一些文件夹,其中包括一个包含Ricardo在上面创建的索引文件的models文件夹。这也提供了一些非常酷的环境配置。在新的models文件夹中,您可以使用以下语法创建一个包含对象的新文件...

代码语言:javascript
复制
module.exports = function(sequelize, DataTypes) {
  var User = sequelize.define("User", {
    username: {
      type: DataTypes.STRING
    }, 
    {
      freezeTableName: true // Model tableName will be the same as the model name 
    }
  });

  return User;
}

虽然我喜欢它作为一种工具。这里需要注意的是,Sequelize将查找define()方法的第一个参数。所以我们可以直接写

代码语言:javascript
复制
module.exports = function(sequelize, DataType){
return sequelize.define("User", {
    username: {
      type: DataTypes.STRING
    }, 
    {
      freezeTableName: true // Model tableName will be the same as the model name 
    }
  });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40764916

复制
相关文章

相似问题

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