【问题标题】:Unable to fetch data using mongoose ,even when i have db and collection already in place无法使用 mongoose 获取数据,即使我已经有了 db 和 collection
【发布时间】:2021-06-11 19:48:45
【问题描述】:

我的用户集合中有数据在 mongoDB 的 userDetails dB 中,数据方案如附图所示。

现在在节点端我已经编写了以下代码来使用 mongoose 访问 mongodb,该代码分为三个文件,如下所示

MongoUtil.js

const urlMongo = "mongodb://localhost:27017"

const mongoose = require("mongoose");

client = async () => { 
    const newConn = await mongoose.createConnection(urlMongo,{ useUnifiedTopology:true,useNewUrlParser:true});
    return await newConn.useDb('userDetails');
}
module.exports = {client}

那我在Models中使用util文件如下

user.js

const mongoose = require('mongoose');
const mongoUtil = require('../mongoutil')
const { Schema } = mongoose;

  const userSchema = new Schema({
    email:  String, // String is shorthand for {type: String}
    userId: Number,
    password:String,
   
  });

const User = async () => {
    const conn = await mongoUtil.client();
    return conn.model('User',userSchema)
}

module.exports = User;

moongose.js

let User = require('./models/user');

getUserData = async() => {  
    const data = await User();
    const userData = await data.find()
    console.log(userData);
}

getUserData();

但我无法获得它总是返回 [] 的任何数据,我哪里做错了

【问题讨论】:

    标签: node.js mongodb mongoose mongoose-schema


    【解决方案1】:

    你的问题在这里:

    return conn.model('User',userSchema)
    

    Mongoose documentation on models 中,您将看到以下内容:

    第一个参数是您的模型所针对的集合的单数名称。 Mongoose 会自动查找您的型号名称的复数、小写版本。

    因此,如果您想使用模型名称“用户”,您应该将您的集合命名为“用户”,而不是用户

    【讨论】:

      【解决方案2】:

      找到了解决方案,上面 sully 的回答描述了 mongoose 中出现的复数问题,解决方法是在创建模式时可以指定集合名称

      const userSchema = new Schema({
         // collection: Student
          "Id" : Number,
          "Name" : String,
          "Subject" : String,
          "Marks" : Number
      
        }, {collection: 'Student'});
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-13
        • 1970-01-01
        • 1970-01-01
        • 2011-10-04
        • 2022-12-08
        • 2017-11-17
        • 2019-12-27
        相关资源
        最近更新 更多