Я создаю приложение, в котором пользователи могут публиковать задания, и я могу загружать задания, которые находятся рядом с текущим пользователем. Со стороны клиента я публикую запросы, которые затем используются в бэкэнде для ответа на результаты пользователей рядом со мной. Вместо того, чтобы получить результат, я получаю сообщение об ошибке, что индекс не был создан.
Я использую postpost для проверки отправки запросов, это ничем не отличается от выполнения на стороне клиента.
файл схемы
const mongoose = require('mongoose')
const schema = mongoose.Schema;
const userSchema = new schema({
username: String,
password: String,
first_name: String,
last_name: String,
email: String,
phone_number: Number,
zip_code: Number,
loc: {
type: {
type: String,
default: "Point"
},
coordinates: []
}
})
userSchema.index({
'loc': '2dsphere'
});
module.exports = mongoose.model('user', userSchema, 'users')
файл маршрутов
const express = require('express')
const router = express.Router();
const mongoose = require('mongoose')
const jwt = require('jsonwebtoken')
const User = require('../models/user')
const db = 'mongodb+srv://georges:<1997>@cluster0-rm0vl.mongodb.net/users?retryWrites=true&w=majority'
mongoose.connect(db, {
useNewUrlParser: true
}, (err) => {
if (err) {
console.log('The error is' + err)
} else {
console.log('the databasee is connected')
}
})
router.get('/nearme/', (req, res) => {
let queries = req.query;
var distance = parseInt(req.query.maxDistance)
var long = parseInt(req.query.long)
var lat = parseInt(req.query.lat)
User.find({
loc: {
$near: {
$geometry: {
type: "Point",
coordinates: [long, lat]
},
$maxDistance: 10.5
}
}
}, function(error, usernearme) {
if (error) {
res.status(401).send(error)
} else {
if (usernearme.length === 0) {
res.status(401).send('no user near me')
} else {
res.status(200).send({
usernearme
})
}
}
})
})
моя ошибка
{
"operationTime": "6701513149272555521",
"ok": 0,
"errmsg": "error processing query: ns=users.usersTree:
GEONEAR field = loc maxdist = 10.5 isNearSphere = 0\ nSort: {}\
nProj: {}\
n planner returned error: unable to find index
for $geoNear query ",
"code": 2,
"codeName": "BadValue",
"$clusterTime": {
"clusterTime": "6701513149272555521",
"signature": {
"hash": "tsfDSZp+cZIi6WDoULsy/NH+BQ0=",
"keyId": "6696267117303431169"
}
},
"name": "MongoError"
}
и, как вы можете видеть, индекс уже создан в файле схемы. Я получаю эту ошибку, как только передал в запрос значения долготы, широты и расстояния, чтобы вернуть пользователя рядом со мной.
Любая помощь будет большой благодарностью.