我正在使用MySQL数据库开发一个node.js应用程序,但是我不得不在应用程序的node.js端创建模型。我以前使用过mongoose来生成模式,并使用模型来实现数据库功能,但我找不到对MySQL的支持。有没有人能推荐一个合适的方法来隔离我在node.js中的数据库函数,就像我在mongoose中所做的那样。这是我现在正在使用的app.js和用户模型。
app文件:
var express= require("express");
var bodyParser = require("body-parser");
var mysql = require("mysql");
var UserModel= require("./models/User.js")
var app=express();
var sql = mysql.createConnection({
host: "localhost",
user: "root",
password: "1234",
database: "dricm"
});
sql.connect(function (err) {
if(err){
console.log("error");
}else{
console.log("connected");
}
});
app.set("views", "./views");
app.use(express.static("node_modules/bootstrap/dist"));
app.use(express.static("public"));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false}));
app.get('/', function (req, res) {
res.render("signup.jade");
});
app.post('/signup', function (req, res) {
var obj= {
username: req.body.username,
password: req.body.password
};
UserModel.createUser(obj);
res.redirect("/");
});
app.listen(3000, function () {
console.log("server running at 3000");
});用户(可能的型号)
var mysql= require("mysql");
var bcrypt = require("bcryptjs");
var sql = mysql.createConnection({
host: "localhost",
user: "root",
password: "1234",
database: "dricm"
});
sql.connect(function (err) {
if(err){
console.log("error");
}else{
console.log("connected");
}
});
var User= {
}
User.createUser = function createUser(newUser) {
bcrypt.genSalt(10, function(err, salt){
bcrypt.hash(newUser.password,salt, function (err, hash) {
newUser.password = hash;
var query = sql.query("INSERT INTO USERS set ?", newUser, function (err, res) {
console.log(query);
if(err) {
console.log("error");
}
else{
console.log(res.insertId);
}
});
});
});
}
module.exports= User;发布于 2018-10-31 00:25:26
你要找的东西叫做对象关系映射,Mongoose是一个用于MongoDB的(一个面向NOSQL文档的数据库)。
对于使用Node.js的关系数据库,还有其他ORM,目前最流行的是我个人使用和推荐的Sequelize。
有了Sequelize,你可以像Mongoose一样把你的模型放在不同的文件中,但是为了加载它们,你需要在你的index.js中用一个简单的脚本添加它们
想象一下下面的工作空间:
--models/
----User.js
----Permissions.js
--index.js你的模型定义是这样的:
User.js
const UserModel = (sequelize, Sequelize) => {
const {INTEGER, STRING, FLOAT, BOOLEAN, DATE} = Sequelize
const User = sequelize.define('User', {
UserId: {type: INTEGER, primaryKey: true, autoIncrement: true},
Username: {type: STRING, primaryKey: true, allowNull: false},
Password: STRING
})
return User
}
module.exports = UserModelPermissions.js
const PermissionsModel = (sequelize, Sequelize) => {
const {INTEGER, STRING, FLOAT, BOOLEAN, DATE} = Sequelize
const Permissions = sequelize.define('Permissions', {
Role: {type: STRING, allowNull: false},
ControllerAddress: {type: STRING, allowNull: false}
})
return Permissions
}
module.exports = PermissionsModel现在,您需要使用以下脚本在index.js中使用它们
let normalizedPath = require('path').join(__dirname, "models")
require('fs').readdirSync(normalizedPath).forEach((file) => {
sequelize.import('./models/' + file)
})
let {User, Permissions} = sequelize.models现在您可以使用User和Permissions实例来控制它们,并调用如下函数
User.create({Username, Password})https://stackoverflow.com/questions/38980031
复制相似问题