[英]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.