Moment.js和服务器端的格式

时间:2018-03-07 15:55:54

标签: meteor momentjs

需要知道:

  • 我正在使用最新版本的meteor
  • 我使用的是最新版本的moment.js
  • 此代码位于服务器端
var date = moment(new Date());
console.log(date.format("YYYY-MM-DD  HH:mm:ss.SS"));

我最终得到了这个错误

SyncedCron: Exception "count daily parks per spot" ReferenceError: moment is not defined
    at spotIDList.forEach (app/server/main.js:66:18)
    at SynchronousCursor.forEach (packages/mongo/mongo_driver.js:1054:16)
    at Cursor.(anonymous function) [as forEach] (packages/mongo/mongo_driver.js:876:44)
    at Object.job (app/server/main.js:62:16)
    at packages/percolate_synced-cron.js:242:26
    at scheduleTimeout (packages/percolate_synced-cron.js:290:7)
    at packages/percolate_synced-cron.js:338:42
    at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1186:26)
    at packages/meteor.js:502:25
    at runWithEnvironment (packages/meteor.js:1238:24)

上面的代码段来自以下代码

SyncedCron.add({
  name: 'Simple Cron Function',
  schedule: function(parser) {
    // parser is a later.parse object
    return parser.text('every 15 second');
  },
  job: function(intendedAt) {
    var spotList = spots.find({});

    spotList.forEach((spot) => {

      var devaddr = `${spot.devaddr}`;
      var date = moment(new Date());
      console.log(date.format("YYYY-MM-DD  HH:mm:ss.SS"));
      var dailyVisitsCount = log.find(
        {
          devaddr : devaddr,
          car : "1",
          createdAt: {
            $gte: date.format("YYYY-MM-DD  HH:mm:ss.SS")
          }
        },
        {
          sort: {
            createdAt:1
          }
        }
      ).count();

      spots.update({devaddr : devaddr}, { $set: {numberOfParksToday: dailyVisitsCount } } , {multi: false}, function(err, res) {
        if (err) throw err;
      });
      console.log("Daily Visits Count Updated to " + dailyVisitsCount);

    });

  }
});

对于为什么这段代码没有按照应该理解的方式工作的任何见解。

我确实发现这个问题是由于先前版本的流星中的一个错误已经修复而发生的。

我只是试图以我的数据库接受的格式获取今天的日期,并使用它来过滤我的结果。其他建议也受到欢迎。

PS:Momnet.js适用于不同地点(客户端代码)

编辑:

W20180312-08:03:15.324(-7)? (STDERR) app/server/main.js:1
W20180312-08:03:15.325(-7)? (STDERR) (function(Npm,Assets){(function(){import moment from 'moment'
W20180312-08:03:15.325(-7)? (STDERR)                                   ^^^^^^
W20180312-08:03:15.325(-7)? (STDERR) 
W20180312-08:03:15.325(-7)? (STDERR) SyntaxError: Unexpected reserved word
W20180312-08:03:15.326(-7)? (STDERR)     at Object.exports.runInThisContext (vm.js:53:16)
W20180312-08:03:15.327(-7)? (STDERR)     at /home/elder/Desktop/Recreation-of-ParkeyeDashboard/ParkeyeDashboard/.meteor/local/build/programs/server/boot.js:289:30
W20180312-08:03:15.327(-7)? (STDERR)     at Array.forEach (native)
W20180312-08:03:15.329(-7)? (STDERR)     at Function._.each._.forEach (/home/elder/.meteor/packages/meteor-tool/.1.4.2_3.14963jl++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/server-lib/node_modules/underscore/underscore.js:79:11)
W20180312-08:03:15.330(-7)? (STDERR)     at /home/elder/Desktop/Recreation-of-ParkeyeDashboard/ParkeyeDashboard/.meteor/local/build/programs/server/boot.js:128:5
W20180312-08:03:15.330(-7)? (STDERR)     at /home/elder/Desktop/Recreation-of-ParkeyeDashboard/ParkeyeDashboard/.meteor/local/build/programs/server/boot.js:344:5
W20180312-08:03:15.330(-7)? (STDERR)     at Function.run (/home/elder/Desktop/Recreation-of-ParkeyeDashboard/ParkeyeDashboard/.meteor/local/build/programs/server/profile.js:480:12)
W20180312-08:03:15.331(-7)? (STDERR)     at /home/elder/Desktop/Recreation-of-ParkeyeDashboard/ParkeyeDashboard/.meteor/local/build/programs/server/boot.js:343:11

1 个答案:

答案 0 :(得分:1)

您需要安装moment.js包:

meteor npm i --save moment

然后在文件的顶部,您需要导入片刻:

import moment from 'moment'

然后以DB格式将接受的格式获取日期,只需执行:

var date = moment().toDate()

使用moment()创建当前日期/时间的时刻对象。在其上运行toDate()会在Date对象中提供相同的日期/时间。