angular - 如何在 angular2/浏览器上使用 mongoose

标签 angular mongoose typescript-typings

我是 MEAN 新手,希望寻求您的帮助。

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

问题1:如何在浏览器端使用Mongoose?

我浏览了一下,认为这种方法可能不正确。

  1. npm 安装 mongoose --save
  2. typings install --global --save dt~mongoose(还有 mpromise、mongoose-promise、mongodb、node)
  3. 在 app.module.ts 上,从 'mongoose' 导入 * as mongoose;
  4. 将这些 ....\typings\globals* 复制到 ....\node_modules(不确定我是否需要此步骤,但只需尝试一下)

当我执行“ng s”时,我收到了这些错误。

问题 2:如何解决以下这些错误?我还尝试了 npm install --save events、npm install --save stream 并输入它们。

[默认] 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 找不到名称“Buffer”。

[默认] 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"
  }
}

非常感谢您的帮助。 提前致谢。

最佳答案

安装了 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");

没有编译错误。您不再需要使用打字。相反,您可以使用 @types

关于angular - 如何在 angular2/浏览器上使用 mongoose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39683001/

相关文章:

Angular 路由总是重定向到主页

angular - Azure map 控制导致 Angular 通用 SSR 错误

typescript - TypeScript 输入问题

javascript - 如何验证 angular2-signaturepad?

Angular 控制台日志仅来自 main.js :1 and polyfills. js:1

node.js - 类型错误 : Cannot use 'in' operator to search for 'pluralization' in undefined

mongodb - Mongoose 中的 findByIdAndUpdate() 和 findOneAndUpdate() 有什么区别?

javascript - Mongoose 预保存 Hook 中的异步功能不起作用

使用解构的剩余参数进行 Typescript 函数重载类型推断

typescript - typescript 类型中的 "three dots"是什么意思?