Actualmente estoy teniendo problemas en la creación de un esquema para el documento de abajo. La respuesta desde el servidor devuelve siempre el «trk» los valores de campo como [Objeto]. De alguna manera, no tengo idea de cómo debía funcionar, como he intentado, al menos, todos los enfoques que tenía sentido para mí 😉

Si esto ayuda, mi Mangosta versión es 3.6.20 y MongoDB 2.4.7
Y antes que me olvide, sería bueno que también se establece como Índice (2d)

De datos Original:

{
    "_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
    }]
    }
}

Mangosta Esquema:

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

La respuesta de la Red de la ficha en Chrome siempre se parece a esto (que es sólo el trk-parte de la cual es incorrecto) :

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

Ya he probado diferentes definiciones de Esquema para «trk»:

  1. trk: Esquema.Tipos.Mezclado
  2. trk: [Esquema.Tipos.Mixto]
  3. trk:[ { tipo:[Número], índice: «2d» }]

Espero que me puedan ayudar 😉

InformationsquelleAutor niels_h | 2013-10-30

3 Comentarios

  1. 189

    Puede declarar trk por las formas siguientes : –
    ya sea

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

    o

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

    En el segundo caso, durante la inserción hacer que el objeto y empuje en la matriz como

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

    o puede establecer la Matriz de objeto por

    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'
          }
    });
    • alguna idea de cómo el nombre de los campos html en este caso yo.e en caso de que sea necesario para almacenar una gran variedad de objetos de javascript en la base de datos? Para el correo.g nomenclatura de campos como trk.lat y trk.lng en html no funcionan.
    • trk : { type : Matriz , «default» : [] } funciona mejor para mí! Es simple y elegante!
    • si declara una matriz en la que el formato no se puede actualizar la matriz de campo directamente. Para actualizar la matriz directamente he usado {lat : Cadena de gnl : String} subschema. Si usted no desea que la instalación, a continuación, trk : { type : Matriz , «default» : [] } va a ser el mejor de lo contrario, usted tiene que declarar el subschema.
    • por defecto sin comillas trabajado para mí trk : { type : Array , default : ['item1', 'item2'] }
    • él todavía funciona si el ‘lat’ y ‘gnl campos donde se define como el Número en lugar de la cadena?
    • Se debe trabajar con el Número
    • Hey cómo buscar dependiendo del campo de búsqueda
    • criterios de búsqueda es un objeto. Es depende de cómo usted desea buscar un elemento. Una vez que usted proporcione criterios de búsqueda mongo encontrará los elementos para usted como por los criterios.

  2. 58

    Tuve un problema similar con la mangosta :

    fields: 
        [ '[object Object]',
         '[object Object]',
         '[object Object]',
         '[object Object]' ] }

    De hecho, yo estaba usando el «tipo» como un nombre de propiedad en mi esquema :

    fields: [
        {
          name: String,
          type: {
            type: String
          },
          registrationEnabled: Boolean,
          checkinEnabled: Boolean
        }
      ]

    Para evitar ese comportamiento, cambie el parámetro a :

    fields: [
        {
          name: String,
          type: {
            type: { type: String }
          },
          registrationEnabled: Boolean,
          checkinEnabled: Boolean
        }
      ]
    • hell yeah, ni siquiera pensar en eso. Que resolver mi problema antes de que yo estaba a punto de empezar a golpear cosas en mi escritorio jaja gracias de nuevo. Voy a evitar el ‘tipo’ en mi mangosta esquemas a partir de ahora.
    • Puede dar un ejemplo de json que estaban tratando de insertar?
    • ¿cómo puedo hacer que los elementos en la matriz de campos único?
    • o usted podría pasar a la typeKey opción a su esquema generador de anular la declaración de tipo de
  3. 1

    Gracias por las respuestas.

    He probado el primer enfoque, pero nada cambió. Entonces, traté de registro de los resultados. Me acaba de perforar hacia abajo nivel por nivel, hasta que por fin llegué a donde los datos se muestran.

    Después de un tiempo he encontrado el problema: Cuando yo era el envío de la respuesta, que era la conversión de una cadena a través de .toString().

    Me fijo que y ahora funciona a la perfección. Lo siento por la falsa alarma.

Dejar respuesta

Please enter your comment!
Please enter your name here