mysql - 添加并返回当前日期 NodeJs
问题描述
我有这个包含工资信息的程序,我想添加数据库的当前日期,如何添加它并将其返回到响应?我将此信息添加到代码中以获取我将其添加到代码中以获取当前工资日期:
let today = new Date();
let dd = String(today.getDate()).padStart(2, '0');
let mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
let yyyy = today.getFullYear();
today = mm + '/' + dd + '/' + yyyy;
我得到这个没有日期的回复:
{
"message": "Salary has been successfully added !",
"salaries": {
"id": 12,
"salaryAmount": "10",
"workStartDate": "2020-01-01T00:00:00.000Z",
"workEndDate": "2020-02-02T00:00:00.000Z",
"bonus": "1000",
"employeeId": "14ll07kwkbjp5c9u"
}
}
我怎么解决这个问题 ?
SalaryRourtes.js:
const sequelizeHandler = require('../SequelizeHandler/sequelizeHandler');
const { DataTypes, Model } = require('sequelize');
class Salary extends Model {
}
Salary.init({
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
salaryAmount:{
type: DataTypes.INTEGER,
allowNull:false
},
workStartDate: {
type: DataTypes.DATE,
allowNull: false
},
workEndDate: {
type: DataTypes.DATE,
allowNull: false
},
bonus:{
type: DataTypes.INTEGER,
allowNull:false
}
},
{
sequelize: sequelizeHandler,
freezeTableName: true,
modelName: 'salary'
}
);
module.exports = Salary;
工资控制器.js:
const SalaryModel = require('../DataLayer/Models/salary');
const SalaryService = require('../ServiceLayer/SalaryService.js');
const _newSalary = async(req, res) => {
const employeeId = req.params['id'];
const dbRes = await SalaryService.Instance.newSalary(employeeId, req.body['salary']);
if(dbRes === null){
return res.status(500).json({message: 'Something has occurred while storing the salary in
db...!'});
}
return res.status(200).json({
message: 'Salary has been successfully added !',
data: dbRes
});
};
module.exports = {
newSalary: _newSalary,
};
工资服务.js:
const SalaryModel = require('../DataLayer/Models/salary');
class SalaryService {
static get Instance() {
return new SalaryService();
}
async newSalary(employeeId, salary) {
const {salaryAmount, workStartDate, workEndDate, bonus} = salary;
let today = new Date();
let dd = String(today.getDate()).padStart(2, '0');
let mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
let yyyy = today.getFullYear();
today = mm + '/' + dd + '/' + yyyy;
console.log(today)
return await SalaryModel.create({
salaryAmount: salaryAmount,
workStartDate: workStartDate,
workEndDate: workEndDate,
bonus: bonus,
employeeId: employeeId,
today:today
})
.then(dbRes => {
console.log(dbRes['dataValues']);
return dbRes;
}).catch(dbError => {
console.log(dbError);
return dbError;
});
}
包.json:
{
"name": "staffy-api",
"version": "1.0.0",
"description": "This is just for testing purposes",
"main": "server.js",
"scripts": {
"test": "jest",
"start": "nodemon server.js"
},
"author": "NourGeorge",
"license": "ISC",
"dependencies": {
"@types/express": "^4.17.6",
"@types/node": "^14.0.5",
"accesscontrol": "^2.2.1",
"bcrypt": "^4.0.1",
"body-parser": "^1.19.0",
"dotenv": "^8.2.0",
"express": "^4.17.1",
"express-validator": "^6.5.0",
"jsonwebtoken": "^8.5.1",
"morgan": "^1.9.1",
"mysql2": "^2.1.0",
"redis": "^3.0.2",
"sequelize": "^5.21.11",
"sequelize-cli": "^5.5.1",
"sequelize-migrate": "^1.2.2",
"uniqid": "^5.2.0"
},
"devDependencies": {
"eslint": "^7.0.0",
"jest": "^26.0.1",
"nodemon": "^2.0.4"
}
}
解决方案
您还需要添加today
到模型中,因为 Sequelize 不知道表中的该列。
SalaryRourtes.js:
const sequelizeHandler = require('../SequelizeHandler/sequelizeHandler');
const { DataTypes, Model } = require('sequelize');
class Salary extends Model {
}
Salary.init({
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
salaryAmount: {
type: DataTypes.INTEGER,
allowNull: false
},
workStartDate: {
type: DataTypes.DATE,
allowNull: false
},
workEndDate: {
type: DataTypes.DATE,
allowNull: false
},
bonus: {
type: DataTypes.INTEGER,
allowNull: false
},
today: { // Configure as you need
type: DataTypes.DATE
}
},
{
sequelize: sequelizeHandler,
freezeTableName: true,
modelName: 'salary'
}
);
module.exports = Salary;
然后你可以这样create
调用SalaryModel
:
await SalaryModel.create({
salaryAmount: salaryAmount,
workStartDate: workStartDate,
workEndDate: workEndDate,
bonus: bonus,
employeeId: employeeId,
today: new Date()
});
或者,如果您对表格中的日期有自定义格式,您可以使用现有代码或尝试下面的代码,它应该会给您相同的结果:
const today = new Date().toLocaleDateString('en-US', {
day: '2-digit',
month: '2-digit',
year: 'numeric'
});
推荐阅读
- node.js - Node.js问题重定向例程发布方法
- webpack - 尝试使用 Sass 和 next.config.js 集成 Ant Design 不起作用
- firebase - Flutter - Dart:如何从我的函数中正确返回文本小部件
- flutter - 我的涉及 GravitySimulation 的动画不会动画
- sql - 两个日期的SQL比较
- ms-access - 访问链接文本向导 - PARAMETER 子句中的语法错误
- c - 将共享对象放入特定的虚拟地址并执行
- python - 从 Keras 模型转换时 tf.saved_model.simple_save 失败
- javascript - 在浏览器扩展中创建一个新选项卡并在加载其内容后调用一个函数
- python - 如何在 Python 中用单个字符/单词替换多个不同的单词?