我有一个问题,真的需要一些帮助。 我们有一个使用 MySQL 的应用程序,我们正在切换到 MongoDB。 我们将 Node.js 与 Express 结合使用,并使用 MongoDB 和 Mongoose 作为数据库
我们查看了 MongoDB 和 Mongoose 文档并在 Stack Overflow 上搜索了相关问题,但我们似乎遗漏了一些东西。
这是我们在 app.js 中的内容:
var mongo = require('mongodb');
var mongoose = require('mongoose');
var db = mongoose.connect('mongodb://localhost:27017/DBName');
这是我们的 usersModel.js
var db = require('mongoose');
var Schema = db.Schema;
var userSchema = new Schema({
u_id : Number,
u_name : { type: String, required: true },
u_lastname : String
});
module.exports = db.model('user', userSchema);
这就是我们在 userController 中使用的:
var User = require('../models/usersModel');
User.find({}, function(err, users) {
if (err) throw err;
console.log("Found users: ", users);
});
console.log(db.connection.readyState);说它正在连接。 并且 User.find() 似乎没有给出错误,而是给出了一个空数组/未定义。
如果有人能告诉我们我们忽略了什么,我们将不胜感激。
提前致谢。
最佳答案
不知道为什么有人认为这是个好主意,但这是 mongoose 的做法:
Mongoose by default produces a collection name by passing the model name to the utils.toCollectionName method. This method pluralizes the name.
作为奖励,它是小写的,当您的表名采用驼峰命名法时,这很糟糕。
您可以通过在方案中设置以下选项来修复它:
var userSchema = new Schema({..}, { collection: 'user' });
关于此的更多信息 here .
关于javascript - Mongoose 已连接但找不到数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43524673/