mongodb get不返回express中的数据

tyg4sfes  于 2023-01-16  发布在  Go
关注(0)|答案(3)|浏览(119)

我正在处理一个简单的GET请求,但它在浏览器中没有返回任何东西,也没有警告。我检查了所有到Mongoose的连接都工作正常,集合名称也正确。

const uriAtlas = "mongodb://localhost:27017/appfullMern";

mongoose.connect(uriAtlas).then(() => 
  console.log("successful connexion DB")
);

const Schema = mongoose.Schema;

let departSchema = new Schema(
  {
    code: Number,
    name: String,
  },
  { versionKey: false }
);

let Depart = mongoose.model("depart", departSchema);

app.get("/",  (req, res) => {
  Depart.find({}, (err, results) => {
    if (!err) {
      res.send(results);
    }
  });
});
m1m5dgzv

m1m5dgzv1#

请尝试用try-catch来 Package 代码,但是如果没有错误,你也只会返回一个响应。这是一个糟糕的错误处理,因为错误或响应会悄悄地出错。

try { 
  const Schema = mongoose.Schema;
  let departSchema = new Schema(
  {
    code: Number,
    name: String,
  },
  { versionKey: false }
  );
  let Depart = mongoose.model("depart", departSchema);

  app.get("/",  (req, res) => {
    Depart.find({}, (err, results) => {
      if (!err) {
        res.send(results);
      } else {
        console.log(err)
      }
    });
  });
} catch (error) {
  console.log(error)
}
2uluyalo

2uluyalo2#

首先,确保您向应用发出的请求返回的状态为200,这样您就可以忽略问题出在请求本身,而不是响应为空。
另外,考虑使用async/await语法。请像这样重构代码并再次检查:

app.get("/", async (req, res) => {
    const results = await Depart.find({});
    res.send(results);
  });
30byixjq

30byixjq3#

很好地解决了这个问题,let Depart = mongoose.model("depart", departSchema);将自动创建一个复数形式的表,这意味着在这种情况下,它将创建departs,所以为了避免这个问题,我们需要添加更多的参数,使它成为let Depart = mongoose.model("depart", departSchema,"depart");

相关问题