#javascript #node.js #express #sequelize.js
#javascript #node.js #экспресс #sequelize.js
Вопрос:
Я использую sequelize orm в node.js . Я создал папки моделей для всех моделей, таких как userModel.js , в userModel.js У меня есть некоторые функции на основе классов, такие как login и getToken.
// some code of userModel.js
const jwt = require('jsonwebtoken');
module.exports = (sequelize, Sequelize) => {
const UserSchema = sequelize.define('User', {
first_name: {
type: Sequelize.STRING,
},
last_name: {
type: Sequelize.STRING,
},
});
// generate token
UserSchema.genToken = (id) => {
return jwt.sign({ id }, 'test');
}
// user login
UserSchema.login = function (body) {
const User = this;
return User.findOne({
where: { email: body.email}
})
.then((result) => {
return resu<
})
.catch((err) => {
return Promise.reject(err);
})
}
return UserSchema;
}
когда я импортирую userModel.js в db.js
const Sequelize = require('sequelize');
const config = {};
var db = {};
const sequelize = new Sequelize(config.database, config.username, config.password, {
host: config.host,
dialect: config.dialect,
operatorsAliases: false,
});
db.sequelize = sequelize;
db.Sequelize = Sequelize;
db.User = sequelize.import('./../models/userModel');
module.exports = db;
итак, мой вопрос заключается в том, когда я использую переменную db для UserModel, например
db.User
Я использую VS code editor для кодирования. Итак, теперь VS code показывает мне все предложения по моделям продолжения, но не показывает мои функции для входа в систему и genToken
//suggest
db.User.find()
db.User.findOne()
//but not include these
db.User.login()
db.User.genToken()
Даже когда я использую db.User.login()
или db.User.genToken()
он работает так, как я хочу, но прямо сейчас мне придется открыть userModel.js снова и снова, чтобы увидеть название всех функций. Как я могу импортировать модели лучшим способом?
Комментарии:
1. Определены ли эти методы
login
иgenToken
в модели UserModel?2. да, я добавил эти функции login и geToken в UserModel, пожалуйста, посмотрите мой первый раздел кода выше и найдите (UserSchema.login)