小编Wil*_*lyC的帖子

提供 mongdb 聚合中字符串值的排序顺序

假设我有一个包含如下文档的集合:

{
    _id: <someMongoId>,
    status: 'start'
    otherImportantData: 'Important!'
}
Run Code Online (Sandbox Code Playgroud)

...状态可以是“开始”、“中间”或“结束”。

我想按状态字段对这些文档(特别是在聚合框架中)进行排序 - 但我不希望按字母顺序排列;我想按开始 -> 中间 -> 结束的顺序排序。

我一直在寻找某种方法将status字段投影到statusValue数字字段(并且我可以在其中指定每个字符串映射到的数字),尽管我很乐意查看任何替代方案。

假设我可以做到这一点。我会status这样绘制并映射它:

start: 1
middle: 2
end: 3
<anything else>: 0
Run Code Online (Sandbox Code Playgroud)

然后我可以在聚合管道中执行类似的操作:

{
    $sort: { statusValue : 1 }
}
Run Code Online (Sandbox Code Playgroud)

...但我不确定如何将这些状态映射到聚合管道中。

如果没有办法,至少我会知道停止寻找。下一个最好的方法是什么?使用 MongoDB 中的 Map-Reduce 功能?

sorting mongodb

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

用node-sass监视所有子目录

我已经看到了许多使用观看特定文件夹的示例node-sass,但是我的css并不都在同一个文件夹中。我希望它以您可以使用的方式监视scss文件的所有子目录onchange(例如)。我假设语法将是这样的:

`node-sass -w app/**/*.scss -o app/**/`
Run Code Online (Sandbox Code Playgroud)

...但是会产生错误: Error: ENOENT: no such file or directory, lstat 'app/**/*.scss'

我要做什么甚至有可能node-sass吗?如果没有,是否有更好的方法将我的scss文件批量编译为css?如果可能的话,我正在尝试仅使用npm脚本进行构建。

npm node-sass

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

可以从Angular2中的"InMemoryWebApiModule"转换?

我已经实施了一个基于"英雄之旅" 教程的项目.我已经达到了我想要开始使用真正的REST后端的程度,但理想情况下我只想通过操作来执行此操作.

我更新了post调用以使用我的REST服务的URL,如下所示:

create(hero: Hero): Promise<Hero> {
    return this.http
        .post("http://127.0.0.1:3001/api/heroes", JSON.stringify(hero), {headers: this.headers})
        .toPromise()
        .then(res => return res.json().data)
        .catch(this.handleError);
}
Run Code Online (Sandbox Code Playgroud)

问题是,这仍然只是由InMemoryDbService提供的InMemoryWebApiModule.事实上,我提供的URL并不重要 - 只要它结束/heroes,它就可以工作.我可以输入任何端口号,任何路径和任何IP(只要它是以可解析的URL结尾/heroes).

我预计它HttpModule会正常工作,InMemoryWebApiModule只有当URL解析为应用程序的URL时才会被击中.显然情况并非如此,并且在某种程度上只是InMemoryWebApiModule.forRoot(InMemoryDataService)在您的模块中导入更改的方式Http(从我能说的).

所以我的问题是 - InMemoryWebApiModule在转换到真实服务时,是否可以继续使用托管模拟服务?您如何修改"英雄之旅"教程来执行单个操作?

angular2-http angular

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

Angular FormGroup.reset 正在触发 ngSubmit 事件

如果我有这样的表格:

<form [formGroup]="someForm" novalidate (ngSubmit)="submit(someForm)">    

stuff

<button (click)="reset()">Reset</button>

<button type="submit">Submit</button>

</form>
Run Code Online (Sandbox Code Playgroud)

...方法reset是这样的:

reset(){
    this.someForm.reset();
}
Run Code Online (Sandbox Code Playgroud)

然后,如果我单击按钮submit,我提供的方法ngSubmit就会被调用Reset。为什么?

我在API文档中看到:

reset(value?: any, {onlySelf, emitEvent}?: {onlySelf?: boolean, emitEvent?: boolean}) : void

...但是onlySelf似乎emitEvent完全没有记录。该emitEvent部分是否触发表单提交?

一直都是这样吗?我还应该在其他地方查看解释onlySelf和的文档emitEvent吗?为什么有人想要重置表单来提交表单?

html typescript angular

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

带有ng2-bootstrap日期选择器的模型驱动表单

我环顾四周,找不到任何确定的方法-您可以将ng2-bootstrap datepicker与Angular2模型驱动的表单一起使用,还是仅适用于模板表单?

该文档介绍了选择器,以便您可以按以下方式使用它(作为示例):

<datepicker [(ngModel)]="startDate" ></datepicker>
Run Code Online (Sandbox Code Playgroud)

...似乎确实有效。理想情况下,我想这样使用它:

<datepicker formControlName="startDate" ></datepicker>
Run Code Online (Sandbox Code Playgroud)

...但似乎开箱即用。有没有办法将此模块与模型驱动的表单一起使用?如果没有,是否存在一种适用于模型驱动表单的合理替代方案?(我也尝试过ng2-datepicker,但是有一个突出的错误使SystemJS难以使用,这很不幸,因为它看起来很光滑)。

datepicker angular2-forms ng2-bootstrap angular2-formbuilder angular

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

似乎无法将函数传递给node.js(TypeScript)中的setTimeout参数数组

这有效:

function test(msg:string){
   console.log(msg);
}

setTimeout(test, 1000, ["Hi!"];
Run Code Online (Sandbox Code Playgroud)

...它会打印出“嗨!” 一秒钟后到控制台。

这也有效:

function test(){
   console.log("Hi!");
}

function callTest(next: () => void){
   next();
}

callTest(test);
Run Code Online (Sandbox Code Playgroud)

它还打印出“Hi!” 到控制台。

以下结果会导致错误“TypeError:next 不是函数”。为什么?

function test(){
   console.log("Hi!");
}

function callTest(next: () => void){
   next();
}

setTimeout(callTest, 1000, [test]);
Run Code Online (Sandbox Code Playgroud)

对我来说它确实看起来像一个函数!如果第一个代码片段有效,则表明我通常具有正确的形式来使用 setTimeout 并向回调发送参数,而第二个代码片段表明这是调用作为参数传入的函数的正确形式 - 为什么不'我在第三个代码片段中使用 setTimeout 有效吗?

javascript settimeout node.js typescript

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