我对Angular一无所知,现在正在学习其工作原理。希望互联网能温柔些......
我已经完成了 Angular2 的 5 分钟快速入门 和 Tour of Heroes 教程,并且没有遇到任何问题。现在我尝试连接到我的本地 MS SQL Server,因为有一个基于 SQL 的项目需要使用 Angular2 平台。我已经努力多日,但无法让 Sequelize 正常工作,真的需要帮助。
根据我读过的不同资料,我已经做了以下工作:
- 使用 npm 安装 sequelize,并验证 sequelize 和其依赖项 lodash、bluebird 和 validator 都存在于 node_modules 中
- 从 GitHub 的 DefinitelyTyped 项目中下载 bluebird.d.ts、lodash.d.ts、sequelize.d.ts 和 validator.d.ts 文件,并将它们放入我的 typings 文件夹中
- 在 tsConfig.json 中,将编译器选项-->目标(target)从 es5 更改为 es6
- 创建了一个简单的 db.component.ts 文件(见下文)
- 更新 app.component.ts 以导入 db.component,并添加一个路由
此时简单页面已经打开,但我无法弄清如何让 Sequelize 正常工作。
我看到的脚本错误(基于使用 Visual Studio Code 作为编辑器):
- 当我打开 sequelize.d.ts 时,有一行代码“declare module"sequelize"{”上出现错误,指出“环境模块无法嵌套其他模块”
- 当我打开 lodash.d.ts 时,在第 239 和 240 行上(下划线处)会出现错误,指出“重复声明'_'
我尝试了很多不同的方法(猜测),但无法让 Sequelize 连接到我的数据库。我知道我需要在 db.component.ts 文件中使用 import 或 require,但最终只能得到 IDE 错误或浏览器(Chrome)中的语法错误。
我理解长期来看,我在这里测试的路由/配置等方式并不是“正确”的方法,但我只需要在重新设计之前通过基本概念验证(例如:我可以连接到数据库并查询表吗?)。
app.component.ts
import { Component } from 'angular2/core';
import { RouteConfig, ROUTER_DIRECTIVES, ROUTER_PROVIDERS } from 'angular2/router';
import { DashboardComponent } from './dashboard.component';
import { HeroService } from './hero.service';
import { HeroesComponent } from './heroes.component';
import { HeroDetailComponent } from './hero-detail.component';
import { dbComponent } from './db.component';
@Component({
selector: 'my-app',
template: `
<h1>{{title}}</h1>
<nav>
<a [routerLink]="['Dashboard']">Dashboard</a>
<a [routerLink]="['Heroes']">Heroes</a>
</nav>
<router-outlet></router-outlet>
`,
styleUrls: ['app/app.component.css']
directives: [ROUTER_DIRECTIVES],
providers: [
ROUTER_PROVIDERS,
HeroService
]
})
@RouteConfig([
{
path: '/dashboard',
name: 'Dashboard',
component: DashboardComponent,
useAsDefault: true
},
{
path: '/heroes',
name: 'Heroes',
component: HeroesComponent
},
{
path: '/detail/:id',
name: 'HeroDetail',
component: HeroDetailComponent
},
{
path: '/sql',
name: 'SqlTest',
component: dbComponent
}
])
export class AppComponent {
title = 'Sample App';
}
db.component.ts
/// <reference path="../typings/sequelize.d.ts" />
import { Component, OnInit } from 'angular2/core';
import Sequelize = require('sequelize'); <-- I dont know if this is doing anything
//- This just errors out with require not being found (tds@latest installed)
//var Sequelize = require("sequelize");
//- I know this goes somewhere, but I have no idea where
//var sql = new Sequelize('dbName', 'uName', 'pw', {
// host: "127.0.0.1",
// dialect: 'mssql',
// port: 1433 <-- SqlExpress
//});
@Component({
selector: 'my-sql',
template:`
<h1>SQL Test</h1>
`
})
export class dbComponent implements OnInit {
constructor(
) { }
auth() {
console.log('auth');
//sql.authenticate().then(function(errors) { console.log(errors) });
}
ngOnInit() {
console.log('onInit');
this.auth();
}
}
我的console.log信息已经能够显示,所以我相信基本功能已经实现了,但目前我不知道需要做什么来使Sequelize正常工作。
我缺少一个关键的部分,对此我感到很无助。非常感谢您提供任何帮助和指引...