小编jdi*_*n04的帖子

获取两个数组之间的差异(包括重复)

我看到很多关于如何在 javascript 中获取数组的差异和对​​称差异的帖子,但我没有找到任何关于如何找到差异的内容,包括重复项。

例如:

let original = [1];
let updated = [1, 1, 2];

difference(updated, original);
// Expect: [1, 2]
Run Code Online (Sandbox Code Playgroud)

有没有一种优雅的方法来做到这一点?我对使用普通 javascript 或 lodash 的解决方案持开放态度。

谢谢!

更新

为了澄清,应该支持无限数量的重复。另一个例子:

let original = [1, 1];
let updated = [1, 1, 1, 1, 1, 2];

difference(updated, original);
// Expect: [1, 1, 1, 2]
Run Code Online (Sandbox Code Playgroud)

更新 2

我意识到原来的要求可能有些混乱。确实应该支持无限重复,但顺序不应该影响输出。

例子:

let original = [1, 1, 2];
let updated = [1, 2, 1, 1, 1];

difference(updated, original);
// Expect: [1, 1]
Run Code Online (Sandbox Code Playgroud)

javascript arrays

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

从Ember到Sails后端发布时CSRF不匹配

首先,我只想说我已阅读了与此主题相关的所有其他主题,但没有任何运气.这是问题的细分:

目标

  1. 在Ember应用程序启动时从Sails中检索CSRF令牌
  2. 将CSRF令牌注入到从Ember应用程序启动的每个AJAX请求中

为了满足目标1,我创建了一个Ember初始化程序,它在应用程序首次启动时运行(如果有更好的位置,我完全愿意接受建议).为了满足目标2,我从Sails中检索CSRF令牌,然后尝试使用Ember.$.ajaxSetup()以确保CSRF令牌作为header(X-CSRF-Token)或parameter(_csrf)传递.我还确保我使用该withCredentials选项来确保设置cookie.这是代码:

// initializers/csrf.js
import Ember from 'ember';
import config from '../config/environment';

export function initialize() {
  Ember.$.get(config.APP.API_URL + '/csrfToken').then(function(result) {
    Ember.$.ajaxSetup({
      data: {
        '_csrf': result._csrf
      },
      xhrFields: { withCredentials: true }
    });
  }, function(error) {
    console.log(error);
  });
}

export default {
  name: 'csrf',
  initialize: initialize
};
Run Code Online (Sandbox Code Playgroud)

所有这些看起来都有效,因为我在Chrome开发工具中可以看到正在检索CSRF令牌,当我发出AJAX请求时,我看到附加到POST数据的数据或添加为标题(尝试了两个选项).这是我正在运行的代码和所有相关标头:

Ember.$.post(config.APP.API_URL + '/auth/register', {
  'email': _this.get('email'),
  'password': _this.get('password')
}).then(function(response) {
  console.log('It worked!');
});
Run Code Online (Sandbox Code Playgroud)

请求标题

POST /auth/register HTTP/1.1
Host: localhost:1337
Connection: keep-alive
Content-Length: …
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery ember.js sails.js

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

使用 Javascript 和 PLV8 在 Postgresql 中计算重复事件

我已经阅读了大约 20 篇关于重复事件数据建模选项的不同帖子,并最终确定了一个实现,但在最终细节方面仍然需要一些帮助。

首先,这里描述了我要完成的任务和要求:

  • 我正在使用 Postgres 9.4
  • 我将它托管在 Amazon RDS 上,它只允许有限数量的预先审查的扩展。

显然,我的应用程序的很大一部分是基于调度的。具体来说,我系统的这个组件允许企业客户安排家庭服务的约会。这些约会可以是单次发生的,也可以是重复发生的。虽然这些约会是典型的,因为它们有开始/结束时间等,但每个约会也有与之相关的数据。该数据可能包括诸如入住时间、退房时间、备注等内容。

为了存储重复约会,我的选择是要么在预定时间点生成每个实例,然后在这些实例运行时在数据库中生成新实例,要么即时计算要返回的这些实例。我最终选择了后者,因为我认为从长远来看,该实现更清洁,更易于维护。

话虽如此,根据这篇文章的见解,我选择将我的重复模式存储为 RRULE 字符串,并使用 PGV8 和rrule.js库进行任何计算。那篇文章提到了物化视图的使用(阅读了它们,但从未使用过),但我不确定它是否适用于我的情况,因为我必须在定期约会更改或创建时重新生成这些。似乎我还需要为每个业务创建一个实体化视图,并且不确定这会如何影响存储/性能,因为可能有 1000 个业务。如果您对此有任何见解,请告诉我。

这个想法是有一个表,Appointment,其中包含与约会的实际日期、时间和重复(如果适用)相关的数据。它将至少包含以下字段:

  • 开始日期
  • 结束日期
  • 重复模式 (RRULE)
  • 例外
  • 服务编号

然后,第二个表,AppointmentData,将存储有关约会本身的任何元数据。例如,它可能包含以下字段:

  • 预约 ID(FK 给家长)
  • 笔记
  • 登记时间
  • 退房时间
  • 等等。

AppointmentData当实例只会产生Appointment实际上是由服务提供商启动。

一般来说,我只需要能够在任何给定时间检索 31 天或更少的约会(除了检索单个实例)。也就是说,我的想法是能够将开始和结束日期传递给数据库,该数据库将找到该范围内所有约会的单次出现。此外,对于包含重复模式的任何记录,我将使用我的 PLV8 函数返回该范围内的日期列表。该rrule.js 库有一个函数可以返回重复模式 ( rule.between(new Date(2012, 7, 1), new Date(2012, 8, 1))) 的所有日期。

这是我有点磕磕绊绊的地方。现在我在数据库中有一个可以动态计算重复日期的函数,我有点不清楚如何将这些与单个事件“融合”在一起并将它们作为单个结果集返回。请注意,对于每个重复出现的实例,我还需要返回表中的所有列Appointment,例如serviceID.

如果有什么不清楚的,请告诉我。

提前致谢!

javascript sql postgresql

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

使用moment.js防止DST转换为重复发生的事件

我正在构建的系统有一个事件组件,其中一部分是创建重复事件的能力.在我的数据库中,我将所有事件存储在UTC中.当用户日历上显示定期事件时,应始终以"待机时间"显示.因此,例如,如果我每周三下午1:00创建一个定期事件,无论夏令时如何,都应该始终在下午1:00.

我遇到的问题是,每当我尝试使用Moment.js格式化此日期时,Moment总是会考虑DST转换并相应地更新事件.以我在前面的例子为例,在2016年,DST转变发生在3月13日,所以如果我的预约在2016年2月被预订,那么每次预约到3月13日都会正确输出为下午1:00.3月13日之后,DST转变已经应用,我现在所有的活动都提前了一个小时.

有没有推荐的方法来处理这个?我似乎找不到让Moment"忽略"DST的方法,也没有在搜索时找到合适的解决方案.

不确定这有多重要,但我在输出日期时使用Moment Timezone转换为用户的本地时区.

谢谢!

javascript node.js momentjs

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

bcrypt在azure应用程序服务上不是有效的win 32应用程序

为了使用Sharp的Node库进行一些图像处理,我必须将Azure App Service上的node可执行文件升级到64位。我是通过手动下载可执行文件,然后在中设置其路径来实现的IISNode.yml

不幸的是,当我启动该应用程序时,它引发以下错误:

应用程序引发了未捕获的异常并被终止:错误:%1不是有效的Win32应用程序。

\\?\D:\home\site\wwwroot\node_modules\bcrypt\build\Release\bcrypt_lib.node
    at Error (native)
    at Object.Module._extensions..node (module.js:597:18)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Function.cls_wrapMethod [as _load] (D:\home\site\wwwroot\node_modules\newrelic\lib\shimmer.js:256:38)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at bindings (D:\home\site\wwwroot\node_modules\bindings\bindings.js:76:44)
    at Object.<anonymous> (D:\home\site\wwwroot\node_modules\bcrypt\bcrypt.js:3:35)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Function.cls_wrapMethod [as _load] (D:\home\site\wwwroot\node_modules\newrelic\lib\shimmer.js:256:38)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (D:\home\site\wwwroot\node_modules\bookshelf-bcrypt\index.js:5:14)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
Run Code Online (Sandbox Code Playgroud)

我正在使用Appveyor CI系统构建和部署应用程序。这是我 …

azure bcrypt node.js appveyor

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