Je trouve un problème dans la définition de l'index géo-spatial '2d' comme indiqué ci-dessous. Toute idée de ce qui ne va pas?Indice spatial Geo en mongodb avec node.js
var Address = new Schema({
loc : {lat: Number, lng: Number },
Address : String,
create_date : {type: Date, default: Date.now}
});
Address.index ({
loc : "2d"
});
Il jette l'erreur comme,
events.js:45 throw arguments[1]; // Unhandled 'error' event ^Error: point not in range at [object Object]. (/cygdrive/c/Personal/software/ nodejs/NODE/no de_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js:503:20)
EDIT: a ajouté le code
var Address = new Schema({
type : {type: String, enum: ['Apartment', 'House', 'Serviced Apartment'], default: 'Apartment'},
loc : {lat: Number, lng: Number },
Address : String,
create_date : {type: Date, default: Date.now}
});
/*
Address.index ({
loc : "2d"
});
*/
mongoose.connect('mongodb://127.0.0.1:27017/test123', function(err) {
if (err) {
console.log("error in mongo connection");
throw err;
}
console.log("connected to mongo");
});
var RentModel = mongoose.model('Rent', Address);
socket = io.listen(app);
socket.sockets.on('connection', function(client){
console.log('inside on connection');
client.on('register', function(msg){
console.log("msg.geometry.type", msg.geometry.type);
var rent = new RentModel();
rent.type = 'Apartment';
rent.loc.lat = 23;
rent.loc.lng = 56;
rent.Address = "LLLLLLLLIIIIIIIOOOOOOONNNNNNNN"
console.log("before save");
rent.save(function(err){
console.log("rent.save start");
if(err) {
throw err;
console.log("error in save");
}
console.log("saved");
});
});
RentModel.find({loc : { $near : [20, 50], $maxDistance: 30 }} , function(err, docs){
if (err) {
console.log("error in finding near", err);
throw err;
}
console.log('docs.length : ' , docs.length);
console.log('docs : ',docs)
})
semble que vous aussi en utilisant mangouste. Avez-vous un objet/une requête que vous exécutez? Le problème pourrait être dans le pilote Node, il pourrait être dans Mongoose ou il pourrait être dans le code, nous avons donc besoin d'un peu plus pour continuer. –
Oui, vous avez raison. J'utilise la mangouste. J'ai modifié la question ci-dessus et ajouté le code. enregistrer se passe correctement. Quand je fais une trouvaille il se plaint de l'index et quand j'ajoute l'index, il indique, "point pas dans la gamme" – user644745
Eh bien, j'ai changé le nom d'attribut de loc à "emplacement" et changé "2d" en "2d" et il semble , ça marche maintenant. C'est étrange. – user644745