mongo 地理位置数据的 Meteor 简单模式

2023-12-24

我想为我的流星应用程序创建一个管理表单;在从头开始构建 Ogno Admin 之前,我打算尝试一下 Ogno Admin,但我不确定它是否可以支持我需要的格式的数据。我当前的应用程序数据像这样进入 mongo:

Beaches.insert({
    "name": "Entry name",
    /* location stored like this so I can use mongo $near queries */
    "location": {
        "type": "Point",
        "coordinates": [-5.0990296,50.110757]
    },
    /* could be many images, minimum 1 */
    "images": [
        {
            "url": "image1.jpg",
            "caption": "Image caption"
        }
    ],
    "shortDesc": "A delightful description...",
    /* fixed list of attributes stored as objects */
    "attributes": {
        "attr 1": {
            "score": 2,
            "text": "attr1 text"
        },

我可以编写一个简单的模式来支持上面的不同数组/对象(尤其是位置坐标)吗?它们必须采用方括号格式 [lng, lat] - ogno admin 可以使用它,还是我必须编写自定义管理内容?对我来说,用其他东西构建管理站点并让它为 Meteor 输出 JSON 数据可能会更容易。

使用可能的架构代码进行更新

Beaches = new SimpleSchema({
  name: {
    type: String,
  },
  location: {
    type: [Object]
  },
    location.$.type: {
    /* how do I force '"type" : "Point" into every entry?
       use 'autovalue' with the .clean() function?*/
    },
      location.$.coordinates: {
      /* how do I ensure a [x,y] array in here? */
    },
  images: {
    type: [Object]
  },
    "images.$.url": {
        type: String
    },
    "images.$.caption": {
        type: String
    },
  attributes: {
    type: [Object]
  },
  /* note that my attributes above are all prefixed with a 'name'
     eg. "attr 1" : {}
     I'm not sure how to declare these either!
  */
  ...
});

嗯,我不知道您保存地理坐标过程的确切解决方案。但如果你想保存 lng 和 lat 你必须传递一个前缀。为什么?地理坐标有不同的验证范围。纬度只能在 -90 到 90 范围内使用,经度只能在 -180 到 180 范围内使用。如果您不保存前缀,您如何确定哪个坐标是哪个?有一天我做错的另一个提示是按经度、纬度顺序存储坐标。

我正在使用的架构如下所示:

GeocoordsSchema = new SimpleSchema({
  lng: {
    type : Number,
    decimal: true,
    min: -180,
    max: 180
  }, 
  lat: {
    type : Number,
    decimal: true,
    min: -90,
    max: 90
  }
});

现在您创建嵌套架构。只需使用 LocationSchema 扩展 GeocoordsSchema 并添加一个属性即可。

LocationSchema = new SimpleSchema({
  type : {
    type : String,
    autoValue: function() {
      return "Point";
    }
  },
  coordinate: {
    type: GeocoordsSchema 
  }
});

如果您想要一个 LocationSchema 数组,可以将 schema 括在 [] 括号中。

BeachesSchema = new SimpleSchema({
  loc: {
    type: [LocationSchema]
  }
});

我还没有测试过,但这就是我创建和嵌套不同模式的方式。这个解决方案需要 lat 和 lng 标识符。您为什么不想为数据添加前缀?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mongo 地理位置数据的 Meteor 简单模式 的相关文章

随机推荐

  • x86 程序集:弹出一个值而不存储它

    在x86汇编中 是否可以从堆栈中删除一个值而不存储它 类似的东西pop word null 我显然可以使用add esp 4 但也许我缺少一个漂亮干净的 cisc 助记符 add esp 4 add rsp 8 is正常 惯用 干净的方式
  • Compact Framework 的 Zip 库选项?

    我的要求 支持 NET Compact Framework 2 0 和Windows Mobile 6 0 设备 只需将内容解压到存储卡上的目录即可 不需要创建 zip 文件 必须能够在企业 商业软件中使用 可以开源 但没有 GPL 或其他
  • 动态删除一系列 Excel 单元格中的空白

    我有一个命名的数据范围 称为 数据 我试图找到一个公式或数组公式 它将返回新的单元格范围中的数据 但会丢失所有空白行 i e data is row x y 1 A 77 2 3 B 23 4 A 100 5 我的新范围是 row x y
  • Android 中没有提示的蓝牙发现

    我可以使用以下代码在没有任何提示的情况下打开 关闭蓝牙 这个需要BLUETOOTH and BLUETOOTH ADMIN权限 boolean isEnabled bluetoothAdapter isEnabled if enable i
  • 即使我安装了它,也没有名为“Kivy”的模块

    据我所知 我已经安装了 Kivy 和所有需要的文件 但我仍然收到此错误消息 我不知道为什么 from kivy app import App from kivy uix gridlayout import GridLayout class
  • 四色定理美国地​​图的Java实现

    我试图为每个状态分配一种颜色 以便没有两个相邻的状态共享相同的颜色 http en wikipedia org wiki Four color theorem http en wikipedia org wiki Four color th
  • 如何将 ICC 添加到现有 PDF 文档

    我有一个使用 CMYK 颜色的现有 PDF 文档 它是使用我获得的特定 ICC 配置文件创建的 如果我在配置文件处于活动状态时打开文档 则颜色明显不同 据我使用各种工具所知 文档中没有嵌入 ICC 配置文件 我想做的是将 ICC 配置文件嵌
  • 加密/解密大文件 (.NET)

    我必须加密 存储然后解密大文件 最好的方法是什么 我听说 RSA 加密很昂贵 建议使用 RSA 加密 AES 密钥 然后使用 AES 密钥加密大文件 任何带有示例的建议都会很棒 一种有机体很大 另一种有机体很小 尽管我们看到它时都知道它很昂
  • MySQL 中复杂的 COUNT 查询

    我正在尝试查找特定用户拥有的视频积分数量 以下是相关的三个表 CREATE TABLE userprofile userprofile id int 11 NOT NULL AUTO INCREMENT full name varchar
  • pandas 绘图值以降序计数 barplot [重复]

    这个问题在这里已经有答案了 我有一个数据框 我试图计算每个值的出现次数 我将其绘制为水平条 但无法对其进行排序 df pd DataFrame A A A B B C columns letters df value counts A 3
  • 当某些后台进程仍在运行时,命令“exit”不起作用

    退出 命令不适用于我的情况 我不明白为什么 ssh user mysever lt lt HEREDOC echo 1 Running PM2 log pm2 log echo 2 PM2 log is now in background
  • 如何在applozic中列出我的联系人列表并发送消息

    Context context getApplicationContext AppContactService appContactService new AppContactService context if appContactSer
  • 尽管实际和预期相同,但 JUnit 给出 ComparisonFailure

    我正在尝试使用 Jsoup 解析网站中的字符串 并编写以下测试来验证解析 这是我的测试 Test public void extractBookData throws Exception String bookLink some addre
  • 将“$(VAR)”回显到文件

    我的 Makefile 中的一行遇到以下问题 echo include BASE Makefile base gt file 如果我直接将其写入控制台 它实际上会将 include BASE Makefile base 打印到文件中 但是当
  • C++11 观察者模式(信号、槽、事件、更改广播器/侦听器或任何您想要的名称)

    随着 C 11 中所做的更改 例如包含std bind 是否有推荐的方法来实现简单的单线程观察者模式 而不依赖于核心语言或标准库外部的任何内容 例如boost signal EDIT 如果有人可以发布一些代码来显示如何依赖boost sig
  • TypeError:无法使用 ReactJs 读取 webpack-cli 中未定义的属性“presetToOptions”

    我正在开发 ReactJS 应用程序并配置 webpack 2 7 0 webpack cli 2 0 9 但是从 cmd 运行 webpack 时出现以下错误 const statsPresetToOptions require webp
  • 延迟 Javascript 中的默认事件

    我希望能够延迟事件的默认操作 直到采取其他操作为止 它的用途 我正在尝试构建一种可重用的 不引人注目的方式来通过模态类型对话确认操作 关键的愿望清单项目是任何 Javascript 处理程序都由脚本附加 而不是直接内联编写 为了使其真正可重
  • 为什么我收到关于隐藏基类方法的属性的警告 CS0108 [重复]

    这个问题在这里已经有答案了 鉴于以下类 C 编译器会向我发出此警告 CS0108 B Example 隐藏继承的成员 A Example string 如果打算隐藏 请使用 new 关键字 class A public string Exa
  • 防止隐藏属性被序列化

    这是对这个问题的一种利用 ASP NET 阴影问题 https stackoverflow com questions 5560278 asp net shadowing issues 我发现问题实际上并不是属性没有被序列化 而是 阴影属性
  • mongo 地理位置数据的 Meteor 简单模式

    我想为我的流星应用程序创建一个管理表单 在从头开始构建 Ogno Admin 之前 我打算尝试一下 Ogno Admin 但我不确定它是否可以支持我需要的格式的数据 我当前的应用程序数据像这样进入 mongo Beaches insert