Mongoose Geolocation 设置默认坐标

Posted

技术标签:

【中文标题】Mongoose Geolocation 设置默认坐标【英文标题】:Mongoose Geolocation set default coordinates 【发布时间】:2021-01-30 19:53:06 【问题描述】:

我正在尝试使用默认坐标创建猫鼬地理定位记录。我可以设置默认值,以便将它们序列化,但它们并没有真正提交给数据库,因此地理空间查询将不起作用。这是我正在做的事情(简化)

const Place = new mongoose.Schema(
  name:  type: String, required: true ,
  location: 
    type: 
      type: String,
      enum: ['Point'], 
      required: true,
      default: 'Point'
    ,
    coordinates: 
      type: [Number],
      required: true,
      default: function () 
        return [0, 0] // Just 0, 0 for the example
      
    
  

当我在 mongo shell 中拉起记录时,根本没有 location 键。

【问题讨论】:

如果你想在你的项目中使用地理定位,你可以使用Redis 这很棒 【参考方案1】:

我不知道更有效的方法 但试试这个:

//pass data like this in your controller

    Store.create(name, lat, lon)

让你的模型像这样

const Place = new mongoose.Schema(
  name:  type: String, required: true ,
  lat:  type: String,
  lon:  type: String,
  location: 
    type: 
      type: String,
      enum: ['Point'], 
    ,
    coordinates: 
      type: [Number],
      index: '2dsphere'
    
  

// run before saving documents 
Place.pre('save', function(next) 
       this.location = 
            type: 'Point',
            coordinates: [this.lat, this.lon]
        ; 
            
   next();
);

【讨论】:

以上是关于Mongoose Geolocation 设置默认坐标的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose 将默认设置为空对象

Mongoose,将默认设置为 null 和唯一

将 Mongoose 文档中的默认日期设置为 now + [一些增量]

将 Mongoose 文档中的默认日期设置为 now + [一些增量]

Mongoose 日期字段 - 将默认设置为 date.now + N 天

Mongoose 日期字段 - 将默认设置为 date.now + N 天