/ / Dlaczego dostaję tylko [] na stronie internetowej z res.json () w express - json, mongodb, express, mangusta

Dlaczego się [tylko] w stronę sieci web z res.json() Express - json, mongodb, express, mongoose

Tak więc, gdy próbuję wyświetlić dane JSON w przeglądarce Itylko [] zamiast pełnych danych. Próbuję wyświetlić dane z mongodb za pomocą mangoose i express. Mam jedną kolekcję w bazie danych i jeden dokument, który próbuję wyświetlić, ale dostaję tylko []. Dlaczego? Oto kod: app.js:

const express = require("express");
const mongoose = require("mongoose");
const bodyParser = require("body-parser");
const Person = require("./Person.model");

const app = express();

mongoose.Promise = global.Promise;
const db = "mongodb://localhost/project";
mongoose.connect(db);
mongoose.connection.once("open", () => console.log("connection has been made...")).
on("error", (error) => console.log(error));

app.get("/", function(req, res) {
res.send("It is good to be here");
});

app.get("/persons", function(req, res) {
Person.find({}).exec(function(error, persons) {
if (error) {
res.send(error);
} else {
res.json(persons);
}
});
});

app.listen(3000, () => console.log("now listening to port 3000"));

i Person.model.js:

const mongoose = require("mongoose");

const Schema = mongoose.Schema;

const PersonSchema = new Schema({
name: String,
age: Number,
favcolor: String,
osobina: String
});

const Person = mongoose.model("person", PersonSchema);

module.exports = Person;

Odpowiedzi:

0 dla odpowiedzi № 1

Ponieważ używasz Promise z Mongoose, możesz spróbować zmienić kod zamiast używać funkcji wywołania zwrotnego w ten sposób

app.get("/persons", function(req, res) {
Person.find({}).exec().then(function(persons) {
res.json(person);
}).catch(function(error) {
res.send(error); //Will lead to a 200 with the error message inside
});
});

Edytować

Nie powinieneś używać new podczas definiowania modelu. Usunąłem trochę zbędnego kodu z twojego modelu, to działa:

const mongoose = require("mongoose");

const PersonSchema = mongoose.Schema({
name: String,
age: Number,
favcolor: String,
osobina: String
});

module.exports = mongoose.model("person", PersonSchema);