I'estou actualmente a ter problemas na criação de um esquema para o documento abaixo. A resposta do servidor devolve sempre o "trk" valores de campo como [Objecto]. De alguma forma não faço ideia de como isto deve funcionar, pois tentei pelo menos todas as abordagens que faziam sentido para mim ;-)
Se isto ajudar, a minha versão Mongoose é 3.6.20 e MongoDB 2.4.7 E antes que me esqueça, seria bom defini-la também como Índice (2d)
Dados originais:
{
"_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
}]
}
}
Esquema do Mangusto:
var TrackSchema = Schema({
_id: Schema.ObjectId,
gpx: {
metadata: {
desc: String,
country: String,
isActive: Boolean
},
trk: [{lat:Number, lng:Number}]
}
}, { collection: "tracks" });
A resposta do separador Rede em Cromo é sempre assim (que's apenas a parte do trk que está errada):
{ trk:
[ [Object],
[Object],
[Object],
[Object],
[Object],
[Object],
Já tentei diferentes definições de esquemas para "trk":
Espero que me possam ajudar ;-)
Pode declarar o trk pelas seguintes formas : - ou
trk : [{
lat : String,
lng : String
}]
ou
trk : { tipo : Array , "default" : [] }``
No segundo caso, durante a inserção, fazer o objecto e empurrá-lo para a matriz como
db.update({'Searching criteria goes here'},
{
$push : {
trk : {
"lat": 50.3293714,
"lng": 6.9389939
} //inserted data is the object to be inserted
}
});
ou pode definir a Matriz de objectos 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'
}
});
Tive um problema semelhante com o mangusto:
fields:
[ '[object Object]',
'[object Object]',
'[object Object]',
'[object Object]' ] }
De facto, eu estava a usar "type" como um nome de propriedade no meu esquema:
fields: [
{
name: String,
type: {
type: String
},
registrationEnabled: Boolean,
checkinEnabled: Boolean
}
]
Para evitar esse comportamento, é necessário alterar o parâmetro para:
fields: [
{
name: String,
type: {
type: { type: String }
},
registrationEnabled: Boolean,
checkinEnabled: Boolean
}
]
Obrigado pelas respostas.
Tentei a primeira abordagem, mas nada mudou. Depois, tentei registar os resultados. Apenas perfurei nível por nível, até finalmente chegar ao local onde os dados estavam a ser exibidos.
Depois de algum tempo encontrei o problema: quando estava a enviar a resposta, estava a convertê-la para um fio através de .toString()
.
Resolvi isso e agora funciona de forma brilhante. Desculpem o falso alarme.