在node.js中使用带返回值的函数

时间:2018-06-02 20:32:06

标签: javascript node.js

我尝试使用extern模块中的函数来创建日期

helper.js

function createDate() {
  var today = new Date();
  var dd = today.getDate();
  var mm = today.getMonth()+1; //January is 0!

  var yyyy = today.getFullYear();
  if(dd<10){
    dd='0'+dd;
  }
  if(mm<10){
    mm='0'+mm;
  }
  today = dd+'/'+mm+'/'+yyyy;
  return today;
}

module.exports = {
  f1: createDate,
};

然后在第createdAT行的 server.js 中使用它:

let helper = require('./helper.js');

app.post('/tasks',  function(req, res) {
  let savedata;
  console.log(req.body);
    let tmpData = [];
    for (let i = 0; i < req.body.length; i ++) {
      savedata = new Model({
        'taskName': req.body[i].taskName,
        'isDone': false,
        //'createdAt': Date.now(),
        'createdAt': helper.f1(),
        'prioraty': req.body[i].prioraty
      });
      tmpData.push(savedata)
    }
    savedata = tmpData;
    Model.collection.insert(savedata, function (err, result) {
      if (err) throw err;

      if (result) {
        res.json(result)
      }
    })
});

但它不是dd / mm / yyyy格式的日期,而是2018-02-05T23:00:00.000Z 格式错了,也是时间......我怎么能解决这个问题呢?

1 个答案:

答案 0 :(得分:0)

所以根据我的理解,在将数据插入数据库之前不需要格式化日期,实际需要的是在返回响应时格式化日期。这里有一点调整你的代码:

createDate()更改为接受数据库中的日期值

function createDate(dateFromDb) {
  var today = new Date(dateFromDb);
  var dd = today.getDate();
  var mm = today.getMonth()+1; //January is 0!

  var yyyy = today.getFullYear();
  if(dd<10){
    dd='0'+dd;
  }
  if(mm<10){
    mm='0'+mm;
  }
  today = dd+'/'+mm+'/'+yyyy;
  return today;
}

然后取消注释第一个//'createdAt': Date.now()

savedata = new Model({
    'taskName': req.body[i].taskName,
    'isDone': false,
    //'createdAt': Date.now(),
    'prioraty': req.body[i].prioraty
  });

然后在发送结果之前最后执行此操作

if (result) {
    result.createdAt = helper.f1(result.createdAt);
    res.json(result)
}