假设我有一个包含如下文档的集合:
{
_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 功能?
我已经看到了许多使用观看特定文件夹的示例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脚本进行构建。
我已经实施了一个基于"英雄之旅" 教程的项目.我已经达到了我想要开始使用真正的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在转换到真实服务时,是否可以继续使用托管模拟服务?您如何修改"英雄之旅"教程来执行单个操作?
如果我有这样的表格:
<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吗?为什么有人想要重置表单来提交表单?
我环顾四周,找不到任何确定的方法-您可以将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
这有效:
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 有效吗?
angular ×3
typescript ×2
datepicker ×1
html ×1
javascript ×1
mongodb ×1
node-sass ×1
node.js ×1
npm ×1
settimeout ×1
sorting ×1