![](/img/trans.png)
[英]How to save a query from model.findOne() on a variable using mongoose
[英]How to change sequelize model.findOne() target table?
我是sequelize.js
。 我有一个模型用户。 我尝试使用 findOne 函数来检查用户是否存在。
这是我的用户模型。
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
}
)
这就是我检查用户的方式。
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)
})
})
但是,我收到一条错误消息,显示表users
不存在。 mysql 数据库中的表名是user
。 如何更改 findOne 目标表名称,以便 findOne 函数搜索用户表而不是用户表?
您可以将模型的freezeTableName
属性设置为true
以禁用 sequelize 默认情况下的模型名称复数形式。
请参考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.