小编dud*_*wad的帖子

npm start vs node app.js

我对Node非常陌生,并试图了解应用基础知识.我很好奇为什么这两个命令:

节点app.js

--vs--

npm开始

输出相同的东西到控制台,似乎继续"监听",但为什么当我尝试访问http:// localhost:3000时,我只在运行第一个命令时得到404.

我看到Express 4似乎有一个不同的应用程序结构,但为什么一个成功侦听而另一个没有,尽管在控制台中有相同的行为?

任何解释都有帮助.谢谢!

javascript node.js npm express

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

同桌上的多对多

有趣的是,我从未遇到过这个!

我从来没有想到一个人可以在一张桌子上拥有"多对多"的关系 - 直到我开始研究用户可以互相"交朋友"的系统(社交网络).

标准查找表,至少在我习惯使用它的方式,在这里是不合适的.让我们保持简单:

用户表具有"id"和"name"列.

User_relationship表具有"uid1"和"uid2",表示"朋友"或"芽"或"好友"或"其他任何"的用户.

很明显这里的问题是什么 - uid1和uid2是来自同一个表的同一列的相同数据类型,这意味着唯一键变得有缺陷.

例如:uid1 = 1 uid2 = 2

是相同的:

uid1 = 2 uid2 = 1

因此,如果查询执行错误,则可以返回2条记录或0条记录.

本着设计好表的精神,我不想两次扫描整个表以检查现有值.

处理这个有什么技巧吗?这是一个从未发生过的设计问题,它让我感到烦恼,因为我知道有一些简单的技巧可以让它发挥作用.

在你问之前,我还没有尝试过任何东西,因为我已经看到我最喜欢的关联方式(查找表)不足以满足我的需求,我需要一些帮助 - 我在SO或Google上找不到任何东西:(

提前致谢.

mysql

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

从CDK Overlay Portal获取对组件的引用

我正在使用服务来使用组件门户实例化Angular Material CDK Overlays.

创建门户并将其附加到覆盖后,是否有任何方法可以访问门户创建的组件的组件引用?我希望能够从外部收听该组件的事件.例如:

const portal = new ComponentPortal(MyCoolComponent, /* ...etc */);
this.overlay.attach(portal);
// I'd like to be able to do something like...
// portal.MyCoolComponent.someEventEmitter.subscribe();
Run Code Online (Sandbox Code Playgroud)

我已经搜索了文档和来源,找不到办法做到这一点.我可能不得不求助于从服务中注入一个非常混乱的组件回调.

有谁知道如何做到这一点?

angular-material angular angular-cdk

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

存储时间信息:需要时区?

我很想知道我正在考虑的是不好的做法,或者如果因为这是一个特定而慎重的选择,那实际上是一个不错的主意.我想存储特定城市中发生的事件的日期信息.我想将这些数据存储为UTC时间戳.简单地存储时间戳和城市ID /国家ID(与特定时区相关联)而不是存储每个事件的时区不是一个好主意吗?我问,因为时区可以改变,但城市ID在数据库中永远不会改变.一旦服务器在时区更改的(不太可能的)事件中与最新时区同步,该事件将是独立的并且不受该更改的影响.但是,假设时区改变了它的边界,那么之前在该时区发生的事件可能在它之外.这样做似乎不明智吗?我只是想知道,我一直在寻求最佳实践,但在这种情况下,这实际上似乎是一个好主意.这特别是因为应用程序设计模型永远不会改变 - 事件将始终与特定城市相关联.

基本流程将是:

  • 具有日期/位置的事件数据以ISO-8601 YYYY-MM-DD字符串等标准格式进入系统.

  • 系统将日期转换为UTC时间戳,并使用该时间戳和事件的城市ID将日期与事件一起存储.

  • 当用户请求查看该事件时,系统会提取与该事件关联的时间戳和城市信息,并使用城市的时区在显示时相应地格式化日期.

这是一个糟糕的主意吗?这有什么好处,存储TZ Offset的概念是否同样可以消除这个问题?

php mysql timezone timestamp

6
推荐指数
2
解决办法
681
查看次数

打字稿:无法识别 .d.ts 文件

这个可能非常简单,但我想弄清楚它会发疯。

我在外部 index.ts 文件中有一个非常简单的自执行函数,需要在 window 对象上注册一个全局变量。我想像这样分配它:

(() => {
  window.myCustomGlobal = new MyCustomGlobal();
})()
Run Code Online (Sandbox Code Playgroud)

我在 index.ts 旁边创建了 index.d.ts:

import { MyCustomGlobal} from './classes';

declare interface Window {
  myCustomGlobal: MyCustomGlobal;
}
Run Code Online (Sandbox Code Playgroud)

上面没有错误,一切看起来都很好。应用程序编译正常。

但是,在 IDE 中,我收到一个错误: ts2339: Property 'myCustomGlobal' does not exist on type 'Window'

我一生都无法弄清楚究竟是什么让 Typescript“弄清楚”要包含什么 .d.ts 文件。在某些库中,将 .d.ts 文件与 .js 文件放在一起会导致它被拾取,并且工作正常。事实上,我使用了与上面完全相同的接口和一个全局第三方库,效果很好;似乎我的 IDE 无法接收它。

我已经尝试添加index.d.ts到tsconfig.jsoninclude以及files没有运气。

有人可以解释一下,就像对孩子一样,是什么导致 TS 拿起声明文件?有时我觉得我明白了,然后在像这样愚蠢的简单例子中,我觉得自己像个白痴。

谢谢

typescript

6
推荐指数
2
解决办法
7601
查看次数

Angular 2 - 使用字符串解析Component Factory

这是针对Angular的2.1.0最终版本.

我正在尝试动态实例化从配置JSON文件传递的类型的组件.我能找到的最好的东西是ComponentFactoryResolver,然而我发现的所有用法似乎都是将实际Type对象传递给解析器.

有没有办法Type从字符串中获取?因为目前,将类型作为字符串传递给我错误:

No component factory found for MyComponent

相关代码:

StructureBuilder组件:

private renderComponent(config:any) {
    let configComponents = config.components;
    if(config.hasOwnProperty('components') && configComponents.length){
        for(let i = 0, len = configComponents.length; i < len; i++){
            this.componentResolver.resolveComponentFactory(configComponents[i]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

其中config.components是一个使用Typeas作为值的字符串数组.

并在模块定义(Structure.module.ts)

@NgModule({
    declarations: [
        MyComponent,
        StructureBuilder_Cmp
    ],
    entryComponents: [
        MyComponent
    ]
    //Etc...
});
Run Code Online (Sandbox Code Playgroud)

就稀疏文档而言,这正是你应该如何做到的.

如果我将传入的动态字符串更改为configComponents[i]实际导入的类型引用MyComponent,则可以.

基本上,问题是:有没有办法使用resolveComponentFactory字符串来解析组件,如果没有,是否有办法Type从字符串值获取引用?

typescript2.0 angular

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