我目前在为下面的文档创建模式时遇到问题.来自服务器的响应总是以[Object]的形式返回"trk"字段值.不知怎的,我不知道该怎么做,因为我至少try 了所有对我有意义的方法;-)

如果这有帮助的话,我的Mongoose版本是3.6.20和MongoDB 2.4.7

原始数据:

{
    "_id": ObjectId("51ec4ac3eb7f7c701b000000"),
    "gpx": {
        "metadata": {
            "desc": "Nürburgring VLN-Variante",
            "country": "de",
            "isActive": true
        },
    "trk": [
    {
        "lat": 50.3299594,
        "lng": 6.9393006
    },
    {
        "lat": 50.3295046,
        "lng": 6.9390688
    },
    {
        "lat": 50.3293714,
        "lng": 6.9389939
    },
    {
        "lat": 50.3293284,
        "lng": 6.9389634
    }]
    }
}

mongoose 模式:

var TrackSchema = Schema({
            _id: Schema.ObjectId,
            gpx: {
                metadata: {
                    desc: String,
                    country: String,
                    isActive: Boolean
                },
                trk: [{lat:Number, lng:Number}]
            }
        }, { collection: "tracks" });

Chrome中网络标签的响应总是这样(这只是trk部分出错):

{ trk: 
      [ [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],

我已经try 了"trk"的不同模式定义:

  1. trk:模式.类型.混合的
  2. trk:[模式.类型.混合]
  3. trk:[{type:[Number],索引:"2d"}]

希望你能帮助我;-)

推荐答案

您可以通过以下方式声明trk:-

trk : [{
    lat : String,
    lng : String
     }]

trk : { type : Array , "default" : [] }

在第二种情况下,在插入过程中创建对象并将其推入数组,就像

db.update({'Searching criteria goes here'},
{
 $push : {
    trk :  {
             "lat": 50.3293714,
             "lng": 6.9389939
           } //inserted data is the object to be inserted 
  }
});

或 you can set the Array of object by

db.update ({'seraching criteria goes here ' },
{
 $set : {
          trk : [ {
                     "lat": 50.3293714,
                     "lng": 6.9389939
                  },
                  {
                     "lat": 50.3293284,
                     "lng": 6.9389634
                  }
               ]//'inserted Array containing the list of object'
      }
});

Node.js相关问答推荐

无服务器框架v3自定义资源现有杯子功能Node16已被弃用

postgresql层与应用层的序列化

如何使用多个OR参数从多个集合聚合

当FastifyJS向客户端发送响应时,apache 不会将其发送给他

MongoDB-$Lookup未获得适当的结果

PEAN auth 应用程序:为什么 Angular 拦截器总是使用BehaviorSubject 返回 null(即初始值),而不是更新后的值?

Angular Build 生产返回致命的 javascript 无效大小错误

Mongodb 从文档中获取聚合结果中的特定属性

一个非常奇怪的JavaScript heap out of memory问题

如何在 Node.js 中逐字节读取二进制文件

Node.js 表达的 Error 对象expose 了哪些属性?

如何使用 mocha.js 模拟用于单元测试的依赖类?

如何在 AWS 上的 Amazon Linux AMI 中自动启动 node.js 应用程序?

如何可靠地散列 JavaScript 对象?

Nodejs 随机免费 tcp 端口

如何在 MongoDB 中查询引用的对象?

使用 Node.js 我得到错误:EISDIR,读取

处理快速异步中间件中的错误

找不到在 docker compose 环境中运行的 node js 应用程序的模块

`return function *(){...}` 是什么意思?