Добавить и вернуть текущую дату NodeJs - PullRequest
0 голосов
/ 19 июня 2020

У меня есть эта программа, которая включает информацию о зарплате, и я хочу добавить текущую дату в базу данных, как я могу добавить ее и вернуть в ответ? Я добавил эту информацию в код, чтобы получить, я добавил это в код, чтобы получить текущую дату зарплаты:

                  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;

salaryController. 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,
     };

salaryService. 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"
             }
        }

1 Ответ

0 голосов
/ 21 июня 2020

Вам также нужно будет добавить 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'
});
...