小编Zac*_*obi的帖子

如何在mongoose中更新多个文档

我找到了以下脚本:

Device.find(function(err, devices) {
  devices.forEach(function(device) {
    device.cid = '';
    device.save();
  });
});
Run Code Online (Sandbox Code Playgroud)

MongoDB有多个文件更新的"多"标志,但我无法使用mongoose.这还不支持还是我做错了什么?!

Device.update({}, {cid: ''}, false, true, function (err) {
  //...
});
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js

49
推荐指数
3
解决办法
8万
查看次数

尝试使用Mocha测试时模型未正确加载

我正在尝试使用mocha来测试我的快递应用.我的文件夹结构是:

myapp
|-app
|--models
|-test
|--mocha-blanket.js
|--mocha
|--karma
|-server.js
Run Code Online (Sandbox Code Playgroud)

server.js是我的快递服务器.之前我曾经有过options.require,但是文档说要使用blanket.js.我mocha-blanket.js是:

var path = require('path');
var srcDir = path.join(__dirname, '..', 'app');

require('blanket')({
  // Only files that match the pattern will be instrumented
  pattern: srcDir
});
Run Code Online (Sandbox Code Playgroud)

我的Gruntfile有:

mochaTest:
  options:
    reporter: "spec"
    require: 'test/mocha-blanket.js'
    # require: "server.js"
  coverage:
    options:
      reporter: 'html-cov',
      captureFile: 'mocha-coverage.html'
    src: ["test/mocha/**/*.js"]
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

>> Mocha exploded!
>> MissingSchemaError: Schema hasn't been registered for model "Company".
>> Use mongoose.model(name, schema)
>>     at …
Run Code Online (Sandbox Code Playgroud)

javascript mocha.js node.js express gruntjs

10
推荐指数
1
解决办法
1996
查看次数

moment.js如何处理闰秒?

我需要一种方法来始终为时间戳添加一分钟,即使由于计划的闰秒,分钟长度为61秒.有谁知道如果不moment().add(1, 'minute')加闰秒增加一分钟?或者它总是添加六十秒?

我已经发现它如何处理夏令时和闰年的增加,但对闰秒没有任何影响.

提供一些背景知识,说明这一点很重要:

我需要创建一个CSV文件,其中包含一系列用于各种传感器的每分钟传感器数据,格式如下:

time,sensor1,sensor2
1491329921800,20,21
1491329981800,22,21
Run Code Online (Sandbox Code Playgroud)

我的数据与一小时开始的时间戳一起存储,然后是一小时的60个数据点的数组.

{
    timestamp: Date(2017,2,24,12,0,0),
    temperature: [20, 22, 23, ... <60 elements total>]
}
Run Code Online (Sandbox Code Playgroud)

我把它变成了一堆时间戳的数据,给第一个数据点一小时的时间戳,并为每个后续数据点增加60秒(因为闰秒总是发生在一小时结束时我只做过一次一次一个小时,这应该没问题).

然后,我需要构建一个字典,将每个时间戳映射到该分钟的值.这是必要的,这样我就可以在CSV的右行中获得正确的数据; 传感器可能已经在不同的时间启动,或者可能已经关闭了一小时或者在一小时的某个时间段没有报告; 我不能只假设所有传感器都有相同的数据.

我找到了使用以下代码创建CSV的所有时间戳:

    var date = moment(startDate);
    var end = endDate.getTime();

    var timestamps = [];

    while(date.valueOf() < end) {
        timestamps.push(date.valueOf());
        date.add(1, 'minute')
    }
    timestamps.push(date.valueOf());
Run Code Online (Sandbox Code Playgroud)

但我不确定它是否安全.如果我需要,我可以date.add(1, 'minute')改为date.add(1, 'minute').startOf('minute'),但这可能会增加很多执行时间,如果可能的话我想避免它.

javascript momentjs

6
推荐指数
1
解决办法
460
查看次数

使用Angular.JS中的$ httpBackend测试需要$ resource的服务

我在SO上看了几个答案,并阅读了官方文档.从我所看到的,这应该是有效的.

在我的服务中,我有:

var RESTServices = angular.module('RESTServices', []);

RESTServices.service('restCall', ['$resource', function($resource){
    return {
        servList: function(args, scope){
            // Lists servers from the API method
            $resource('http://localhost:1000/apiv1/servers')
                .get(args).$promise.then(function (result) {
                    scope.servers = result.server_list;
                    }, function(error){
                    errorHandler(scope, error)
                })
            }, ... etc.,
    };
}]);
Run Code Online (Sandbox Code Playgroud)

我正在尝试运行测试:

describe('Services that require API calls', function() {
    var restCall,
        $httpBackend;
    beforeEach(function () {
        module('RESTServices');

        inject(function (_$httpBackend_, _restCall_) {
            restCall = _restCall_;
            $httpBackend = _$httpBackend_;
        });
    });
    it('Should supply a list of servers', function () {
        //var serverList = ['Thufir Hawat', …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

1
推荐指数
1
解决办法
1925
查看次数