Я новичок в nodejs.i уже есть база данных с именем aqi с именем коллекции pln. Я пытаюсь показать все записи в коллекции на веб-странице, но мангуст всегда возвращает пустой массив. Я тестировал его с другими базами данных, но я могу получить от них данные, но для pln mongoose всегда возвращает пустой массив. я был бы очень признателен, если бы кто-нибудь мог мне помочь. это моя схема
var Pln = new Schema({
latit : Number,
longit : Number,
timestmp : String,
co : Number,
smoke : Number,
O3 : Number,
humidity : Number,
temperature: Number,
co2 : Number,
dust : String
});
var plnModel = mongoose.model('pln', Pln);
Это мой маршрут.
app.get('/', function(req, res) {
res.contentType('application/json');
plnModel.find({}, function(err, pln) {
if (pln != null) {
console.info('Found the User:' + pln.latit);
res.send(JSON.stringify(pln));
}
});
});
Я зарегистрировал его, и в консоли он также возвращает []. Но я протестировал это с моей тестовой базой данных, я вижу все данные.
как зовут вашу БД? сколько записей в нем?
Имя базы данных - aqi, а имя коллекции - pln с примерно 1610 записями





Если вы определите свою модель таким образом: mongoose.model('pln', Pln), тогда ваша коллекция должен будет называться 'plns' (= название вашей модели + s)
Если это не так, вы должны сообщить Mongoose, что у вас есть собственное имя коллекции (в вашем случае, из ваших комментариев, 'pln' без s), используя:
mongoose.model('pln', Pln, 'pln'), третий аргумент - настоящее имя вашей коллекции.
И взгляните на этот код:
app.get('/', async (req, res) => {
try {
const pln = await plnModel.find().lean().exec(); // "lean" to get only JSON data (not Mongoose objects), faster
console.info('Found Users :', pln);
res.status(200).json(pln);
} catch(err) {
res.status(500).json(err);
}
});
Спасибо большое мужик ... your'e спасатель жизни .. отлично сработал.
Рад, что смог помочь. Не забудьте подтвердить ответ (и проголосовать за него), если он решил вашу проблему.
@JeremyThille, спасибо за ваш ответ и за то, что сразу перешли к делу. Я нашел еще два ответа на этот вопрос, которые мне не понравились, но теперь я понимаю, что пошло не так.
Большое спасибо, Джереми. Ты великолепен
@ pdsla112 Ха-ха, спасибо ^^
Как узнать, что он возвращает пустой массив? Вы не регистрируете это.
plnв массиве, поэтому тестирование наif (pln != null)бесполезно, так как это всегда будет верно. С другой стороны,pln.latitвсегда будет неопределенным, потому что[].latitне определен. Кроме того, почему вы структурируете документы? Это не может работать, потому что вы устанавливаетеcontentType('application/json')и отправляете обратно строку. Просто отправьте обратноres.status(200).json(pln).