第一次
我在mongoDB的userDetails dB中的User集合中有数据,数据方案如所附图像所示。
现在,在节点端,我已经编写了以下代码来使用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}
那么我将在模型中使用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();
但我无法获得任何数据,它总是返回[],我哪里做错了
3条答案
按热度按时间fykwrbwg1#
你的问题就在这里:
在Mongoose documentation on models中,您将看到以下内容:
第一个参数是模型集合的单数名称,Mongoose会自动查找模型名称的小写复数形式。
因此,如果要使用模型名称“User”,则应将集合命名为“users”,而不是User
oknwwptz2#
我找到了解决方案,萨利的上述回答描述了mongoose中出现的复数化问题。解决方法是在创建模式时指定集合名称
ma8fv8wu3#
尝试在模式的末尾使用复数形式的DB集合。如果代码中的所有内容都正确,它就解决了
{}
的问题。请查看以下代码片段以获取帮助: