[英]How to change sequelize model.findOne() target table?
I am new to sequelize.js
.我是
sequelize.js
。 I have one model User.我有一个模型用户。 I try to use findOne function to check whether the user is existed or not.
我尝试使用 findOne 函数来检查用户是否存在。
This is my user model.这是我的用户模型。
const Sequelize = require('sequelize')
const db = require('../database/db.js')
module.exports = db.sequelize.define(
'user',
{
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
name: {
type: Sequelize.STRING
},
email: {
type: Sequelize.STRING
},
username: {
type: Sequelize.STRING
},
password: {
type: Sequelize.STRING
},
address: {
type: Sequelize.STRING
},
created: {
type: Sequelize.DATE,
defaultValue: Sequelize.NOW
},
role: {
type: Sequelize.STRING
}
},
{
timestamps: false
}
)
This is how I check the user.这就是我检查用户的方式。
const express = require('express')
const users = express.Router()
const cors = require('cors')
const jwt = require('jsonwebtoken')
const bcrypt = require('bcrypt')
const User = require('../../models/User')
users.use(cors())
process.env.SECRET_KEY = 'secret'
users.post('/register', (req, res) => {
console.log("testing register zzz");
const today = new Date()
const userData = {
name: req.body.name,
email: req.body.email,
username: req.body.username,
password: req.body.password,
address: req.body.address,
created: today,
role: req.body.role
}
User.findOne({
where: {
email: req.body.email
}
}).then(user => {
if (!user) {
console.log("not inside database");
bcrypt.hash(req.body.password, 10, (err, hash) => {
userData.password = hash
User.create(userData)
.then(user => {
res.json({ status: user.email + 'Registered! liao' })
})
.catch(err => {
res.send('error: ' + err)
})
})
} else {
console.log("inside database");
res.json({ error: 'User already exists' })
}
})
.catch(err => {
console.log("?????? "+err);
res.send('error: ' + err)
})
})
However, I received an error show me that table users
does not exist.但是,我收到一条错误消息,显示表
users
不存在。 The table name in mysql database is user
. mysql 数据库中的表名是
user
。 How to change the findOne target table name so that findOne function search the user table instead of users table?如何更改 findOne 目标表名称,以便 findOne 函数搜索用户表而不是用户表?
You can set freezeTableName
attribute of a model to true
to disable pluralization of model names that sequelize does by default.您可以将模型的
freezeTableName
属性设置为true
以禁用 sequelize 默认情况下的模型名称复数形式。
Please refer to the following example given in sequelize docs请参考sequelize docs 中给出的以下示例
var User = sequelize.define('user', {
firstName: {
type: Sequelize.STRING,
field: 'first_name' // Will result in an attribute that is firstName when user facing but first_name in the database
},
lastName: {
type: Sequelize.STRING
}
}, {
freezeTableName: true // Model tableName will be the same as the model name
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.