【问题标题】:How to create a Mongoose schema from JSON如何从 JSON 创建 Mongoose 模式
【发布时间】:2017-01-14 16:22:19
【问题描述】:

我是 mongodb、nodejs 和 mongooseJS 的新手。最近,我一直在尝试为我的 JSON 创建一个猫鼬模式。

{
  "endpoints":["a","z"],
  "poi":[{
  "location_name": "a",
  "latitude": " 10.1075702",
  "longitude": "76.345662",
  "distance" : "0.0"
}, {
  "location_name": "b",
  "latitude": "10.110199",
  "longitude": "76.3489361",
  "distance" : "2.0"
}, {
  "location_name": "c",
  "latitude": "10.1197471",
  "longitude": "76.342873",
   "distance" : "3.1"
}, {
  "location_name": "d",
  "latitude": "10.1254479",
  "longitude": "76.3332626",
   "distance" : "4.4"
}, {
  "location_name": "e",
  "latitude": "10.1443277",
  "longitude": "76.2566017",
  "distance" : "13.9"
}, {
  "location_name": "f",
  "latitude": "10.1487145",
  "longitude": "76.2441114",
   "distance" : "15"
}, {
  "location_name": "z",
  "latitude": "10.145578",
  "longitude": "76.2317077",
  "distance" : "16.9"
}]
}

这是我拥有的 JSON 文件。我尝试使用来自https://github.com/nijikokun/generate-schema 的生成模式,它给了我以下输出

 { 
endpoints:[ 'String' ], 
poi: [ 'String' ]
 }

我使用了这个,当我使用来自 chrome webstore 的 Postman 对其进行测试时,我无法使用 get 请求从数据库中检索完整的 JSON。我都无法成功运行发布请求。

最近我尝试使用 JSON 模式而不是使用 mongoose 模式

mongoose.Schema("JSON Schema')

当我尝试使用 JSON Schema 时,我能够使用 GET 请求从 mongodb 集合中检索数据,但我无法使用 JSON Schema 正确发布数据

我也在考虑放弃 nodejs 并在 java 和 mongodb 中重新开发 web 服务。如果我尝试使用 Java Web 服务与 mongodb 交互,它会影响我的 Web 应用程序的性能吗?

【问题讨论】:

标签: java node.js mongodb mongoose-schema


【解决方案1】:

您可以使用Generate Schemas 模块来完成此任务。

var jsonObject={
var GenerateSchema = require('generate-schema')
var schema = GenerateSchema.json('Product',jsonObject);

console.log(JSON.stringify(schema))

因为你有两个主要属性之一是endpoints 和其他poi

这是您的 JSON 对象的输出模式

    {
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "Product",
  "type": "object",
  "properties": {
    "endpoints": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "poi": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "location_name": {
            "type": "string"
          },
          "latitude": {
            "type": "string"
          },
          "longitude": {
            "type": "string"
          },
          "distance": {
            "type": "string"
          }
        }
      }
    }
  }
}

建议:你会得到一些不需要的字段,你必须修改它。所以我认为你应该根据你的对象创建自定义模式,这对你来说会更好

你也可以得到其他参考here

【讨论】:

  • 谢谢,我能够通过对您提供的架构进行一些自定义来检索数据。但我想知道的事情很少。你用 JSON 模式而不是猫鼬模式回答了我。在您的参考资料中,我找到了有关将 JSON 模式转换为 mongoose 模式的详细信息。我应该使用哪一个?
  • 现在我已经彻底浏览了它,我无法向我的网络服务发布任何内容,但我可以使用 get 请求检索数据
  • 如果您自定义生成的 schema 并获得了有效的 JSON,那么您只需将其传递给 mongoose.Schema 构造函数即可。mongoose.Schema(your customize schema)
猜你喜欢
  • 1970-01-01
  • 2016-01-21
  • 2020-05-07
  • 1970-01-01
  • 2013-12-13
  • 2016-08-09
  • 1970-01-01
  • 1970-01-01
  • 2022-07-18
相关资源
最近更新 更多