Mar*_*cin 2 mysql validation model node.js express
我正在使用 Node.js 和 Express 框架开发应用程序。我发现了很多使用 MongoDB 建模数据的例子,但我的项目需要 SQL 数据库。
有人可以简单解释一下,基于MySQL制作模型的最佳方法是什么?
我也想知道如何提供这些模型的后期验证。也许我应该在每个属性中定义验证属性?
没有最好的方法来制作基于 MySQL 的模型。您可以实现自己的处理模型的方式,但是 Node.js 有许多可用的 ORM 模块,我建议使用其中之一。
我使用Sequelize作为 ORM 来定义模型并在几个 Express 应用程序中与数据库交互。我遇到的另一个 Node ORM 是Bookshelf.js,但还有很多其他的。使用哪一种取决于您的喜好和需要。
编辑:用法示例
使用 Sequelize 模型时,我建议采用以下结构:项目中名为 models 的目录,每个模型都有一个文件,还有一个 index.js 文件用于加载 Sequelize 环境。如果您使用Sequelize CLI,它也有几个遵循此结构的方法。
索引.js
const fs = require("fs");
const path = require("path");
const Sequelize = require("sequelize");
let sqize = new Sequelize({
host : "1.2.3.4",
port : 1234,
database : "testDb",
username : "pino",
password : "th1S1s@c0mpL3xP4sSw0rD",
dialect: 'mysql',
});
fs.readdirSync(__dirname).filter(function(file) {
return (file.indexOf(".") !== 0) && (file !== "index.js");
}).forEach(function(file) {
let 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;
db.Sequelize = Sequelize;
db.op = Sequelize.Op;
module.exports = {
sqize: sqize,
Sequelize: Sequelize,
op: Sequelize.Op
};
Run Code Online (Sandbox Code Playgroud)
用户.js
module.exports = function (sequelize, DataTypes) {
let users = sequelize.define('users', {
username: {
type: DataTypes.STRING(255),
allowNull: true
},
firstname: {
type: DataTypes.STRING(255),
allowNull: true
},
secondname: {
type: DataTypes.STRING(255),
allowNull: true
},
email: {
type: DataTypes.STRING(255),
allowNull: true
},
type: {
type: DataTypes.INTEGER(4),
allowNull: true,
references: {
model: 'users_type',
key: 'id'
}
},
password: {
type: DataTypes.STRING(255),
allowNull: true
},
salt: {
type: DataTypes.STRING(255),
allowNull: true
}
}, {
tableName: 'users'
});
users.associate = function (models) {
users.belongsTo(models.user_types, {
foreignKey: "type",
as: "userType"
});
users.hasMany(models.user_logs, {
foreignKey: "user_id",
as: "userLogs"
});
};
return users;
};
Run Code Online (Sandbox Code Playgroud)
更多参数和细节,可以查看Sequelize doc,它非常简单,充满了示例和细节。
此外,我使用了一些 ECMAScript 6,因此如果您的 Node.js 版本不支持这些代码,请更改或转译这些代码。
| 归档时间: |
|
| 查看次数: |
3245 次 |
| 最近记录: |