地理元素必须是数组或对象:类型:“点”

Posted

技术标签:

【中文标题】地理元素必须是数组或对象:类型:“点”【英文标题】:geo element must be an array or object: type: "Point" 【发布时间】:2019-02-09 02:30:59 【问题描述】:

当我尝试这样的发布请求时

" "imgUrl": "Server\Pictures\i14182109167", "text": "我自己在 首尔”,“标签”:[“首尔”,“旅游”],“几何”:“类型”:“点”,“坐标”:[80, -27] "

错误原因

'无法提取地理键: _id: ObjectId(\'5b8e204455526366f86a6383\'),标签:[“首尔”,“旅游”], 日期:新日期(1536041028423),imgUrl: “服务器\图片\i14182109167”,文本:“我自己在首尔”,几何: 类型:“点”,坐标:[80,-27],_id: ObjectId(\'5b8e204455526366f86a6384\') , __v: 0 地理元素必须 是一个数组或对象:类型:“Point”'

即使我在帖子请求中添加了 "type": "Point" 但是,为什么?

const geoSchema = new Schema(
  type: 
      type: String,
      default: 'Point',
      index: '2dsphere'
  ,
  coordinates: 
      type: [Number]
  
);

const memoSchema = new Schema(
  imgUrl: 
    type: String
  ,
  text: 
    type: String
  ,
  date: 
    type: Date,
    default: Date.now
  ,
  tag: 
    type: [String]
  ,
  user: 
    type: Schema.Types.ObjectId,
    ref: 'Memo'
  ,
  geometry: geoSchema
)

【问题讨论】:

【参考方案1】:

我将几何图形更改为 loc 它起作用了! 但是,我不知道为什么...

【讨论】:

这是因为 loc 不是地理索引。您可以将其更改为可以使用的任何内容。但它不会被索引【参考方案2】:

我遇到了这个错误,尝试了几个模式声明,直到 我通过这个实现这个设计解决了:

1。创建一个具有 Point 作为属性的新架构。

const mongoose = require('mongoose');
const Point = require('mongoose-geojson-schema');

const pointSchema = new mongoose.Schema(
  type: 
    type: String,
    enum: ['Point'],
    required: true
  ,
  coordinates: 
    type: [Number],
    required: true
  
);

2。包含上述属性的对象架构:

const itemsSchema = new mongoose.Schema(
      description: 
        type: String,
        required: true
      ,
      location: 
        type: pointSchema,
        required: true
      
)
const Item = mongoose.model('Item', ItemsSchema);
module.exports = Item;
    enter code here


3。最后,我的控制器成功像这样实例化对象:

  var geolocation =
  
    type: 'Point',
    coordinates: [
      lng,
      lat
    ]
  ;


 const item = new Item(
     description: req.body.description,
     location: geolocation
 )

希望对您有所帮助。

【讨论】:

已经遵循了这个,仍然是同样的错误:地理元素必须是一个数组或对象:类型:“点”

以上是关于地理元素必须是数组或对象:类型:“点”的主要内容,如果未能解决你的问题,请参考以下文章

c语言中,定义数组和引用数组时,其数组的下标的数据类型分别允许是啥?

C ++中的“表达式必须具有指向对象类型”和“下标需要数组或指针类型”是啥意思?

java基础数组

JNI/NDK开发指南——访问数组(基本类型数组与对象数组)

数组的四个基本特点

集合增强for泛型