我遇到了问题,可以使用一些帮助。 我们有一个使用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()似乎没有给出错误,而是给出一个空数组/未定义。
如果有人能告诉我们我们忽略了什么,我们将非常感激。
提前致谢。
答案 0 :(得分:1)
你的find()电话对我来说很好。
您确定收藏中有用户吗?创建新用户是否会抛出您没有注意到的错误?也许你可以通过弹出一个终端并写下来验证你的收藏中确实有用户:
> mongo
> use DBName
> show collections
> db.user.find()
这将返回所有存在的用户。
答案 1 :(得分:1)
在:iuliu.net:我们得到的错误是第一个是[]而第二个是未定义的。
在JohnnyHK:感谢您的提交,但我们确信用户集合在此数据库中,并且我们搜索的属性存在。
在Juuso:感谢您的反馈,但在mongo终端,我们收到了收集输出。
如果我们和僧人一起尝试这个问题,有人会问我们一个关键问题。我们 安装了和尚,我们找到了数据库,收集并得到了 结果回来了。我们还不确定Mongoose的问题是什么, 但是和僧人一起工作。
谢谢你们的反馈和时间。
答案 2 :(得分:1)
不确定为什么有人认为这是个好主意,但这是猫鼬的工作:
默认情况下,猫鼬通过将模型名称传递给utils.toCollectionName方法来生成集合名称。此方法将名称复数。
作为奖励,当表名具有驼峰大写约定时,它会使用小写字母。
您可以通过在方案中设置以下选项来解决此问题:
var userSchema = new Schema({..}, { collection: 'user' });
有关此here的更多信息。