如何在angular2 / browser上使用mongoose

时间:2016-09-25 03:11:46

标签: angular mongoose typescript-typings

我是MEAN的新手,想寻求你的帮助。

由于我在服务器端使用Mongoose并且拥有大量模式,因此我想在表单输入中重用Angular2浏览器端的模式。由于Mongoose现在是同构的,我认为它应该是可行的。如果可能的话,我想在客户端使用Mongoose / Angular2进行架构,文档和验证。我不会从浏览器连接到数据库。

问题1:如何在broswer方面使用Mongoose?

我浏览了一下,并且正在考虑这种可能无法纠正的方法。

  1. npm install mongoose --save
  2. typings install --global --save dt~mongoose(也是mpromise,mongoose-promise,mongodb,node)
  3. 在app.module.ts上,导入*为mongoose来自' mongoose';
  4. 将那些.... \ typings \ globals *复制到.... \ node_modules(不确定我是否需要这一步,但只是尝试一下)
  5. 当我做了'时,我收到了这些错误。

    问题2:如何在下面解决这些错误?我还尝试了npm install --save events,npm install --save stream和typings。

    [默认]中的错误D:\ MEAN \ projects \ fhir \ fhirapp \ node_modules \ mongodb \ index.d.ts:4:29 无法找到模块'事件'

    [默认]中的错误D:\ MEAN \ projects \ fhir \ fhirapp \ node_modules \ mongodb \ index.d.ts:102:18 找不到名称'缓冲区'。

    [默认]中的错误D:\ MEAN \ projects \ fhir \ fhirapp \ node_modules \ mongodb \ index.d.ts:1127:44 无法找到名称空间' NodeJS'。

    [默认]中的错误D:\ MEAN \ projects \ fhir \ fhirapp \ node_modules \ mongoose \ index.d.ts:6:26 无法找到模块' stream'。

    [默认]中的错误D:\ MEAN \ projects \ fhir \ fhirapp \ node_modules \ mongoose \ index.d.ts:13:29 找不到名称' global'。

    我的typings.json

    {
      "globalDependencies": {
        "mongodb": "registry:dt/mongodb#2.1.0+20160602142941",
        "mongoose": "registry:dt/mongoose#4.5.9+20160922172925",
        "mongoose-promise": "registry:dt/mongoose-promise#4.5.4+20160822161941",
        "mpromise": "registry:dt/mpromise#0.5.4+20160316155526",
        "node": "registry:dt/node#6.0.0+20160923124626"
      }
    }
    

    您的帮助非常受欢迎。 提前谢谢。

1 个答案:

答案 0 :(得分:3)

安装了TypeScript 2.0.3(如果你正在使用Angular 2.0+,你应该使用它),我使用了以下package.json

npm install mongoose core-js --save
npm install @types/mongoose @types/core-js @types/node typescript --save-dev

{
  "name": "stackoverflow_mongoose",
  "version": "1.0.0",
  "description": "test",
  "main": "index.js",
  "license": "ISC",
  "dependencies": {
    "core-js": "^2.4.1",
    "mongoose": "^4.6.1"
  },
  "devDependencies": {
    "@types/core-js": "^0.9.34",
    "@types/mongoose": "^4.5.36",
    "@types/node": "^6.0.41",
    "typescript": "^2.0.3"
  }
}

我创建了一个tsconfig.json文件:

{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es5",
        "noImplicitAny": false,
        "sourceMap": false
    }, 
    "exclude": [
        "node_modules"
    ]
}

一个示例文件index.ts

import * as mongoose from "mongoose";

mongoose.connect("sample");

没有编译错误。你不应该再使用typings了。相反,您可以使用@types