如何使用Nodejs只从mongoose获取所有数据

qnakjoqk  于 2022-11-13  发布在  Go
关注(0)|答案(1)|浏览(281)

我无法从mongoose中获取所有数据。当我尝试获取数据时,它创建了一个新的集合名称(登录),名称为空,但登录集合已经存在。
我不明白我做错了什么
Index.js文件

const express = require("express");
const app = express();
const mongoose = require("mongoose");

mongoose
    .connect("mongodb://0.0.0.0:27017/signin")
    .then(() => console.log("MongoDB Connected"))
    .catch((err) => console.log(err));

const User = require("./models/signin");

app.use("/", (req, res) => {
    User.find({}, (err, data) => {
        if (err) throw new err();
        return res.json(data);
    });
});

app.listen(5500, () => console.log("Port Started on 5500"));

签名

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const loginSign = new Schema({
    email: { type: String, required: true },
    password: { type: String, required: true },
    date: { type: Date, default: Date.now },
});

module.exports = Users = mongoose.model("signin", loginSign);

yb3bgrhw

yb3bgrhw1#

Mongoose会自动从您的模型名称“复数化”您的集合名称。
所以mongoose.model("signin", loginSign)正在创建一个名为"signins"的集合。
从文档中:https://mongoosejs.com/docs/models.html#compiling
第一个参数是模型集合的单数名称,Mongoose会自动查找模型名称的小写复数形式。
提供第三个参数将使用您指定的集合名称,而不是mongoose创建的集合名称。因此,在您的情况下,您可以:
mongoose.model("signin", loginSign, "signin");
也就是说,使用复数集合名称是标准做法,也是鼓励的做法。

相关问题