首页 > 解决方案 > 添加并返回当前日期 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"
             }
        }

标签: mysqlnode.jsdatesequelize.js

解决方案


您还需要添加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'
});

推荐阅读