我是 MEAN 新手,希望寻求您的帮助。
由于我在服务器端使用 Mongoose 并且有很多架构,因此我想在表单输入中重用 Angular2 浏览器端的架构。由于 Mongoose 现在是同构的,我认为它应该是可行的。如果可能的话,我想在客户端使用 Mongoose/Angular2 的架构、文档和验证。我不会从浏览器连接到数据库。
问题1:如何在浏览器端使用Mongoose?
我浏览了一下,认为这种方法可能不正确。
- npm 安装 mongoose --save
- typings install --global --save dt~mongoose(还有 mpromise、mongoose-promise、mongodb、node)
- 在 app.module.ts 上,从 'mongoose' 导入 * as mongoose;
- 将这些 ....\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/