我正在按照本教程了解mongoose如何与mongodb交互:http://blog.modulus.io/getting-started-with-mongoose
我创建了一个架构和一个模型。当我保存数据时,我得到一个控制台回调,它给了我一切,我已经保存了。当我找到这些信息时,它也会被注销。但是当我通过终端登录mongo时,使用mydb并执行查询db.mydb.find().pretty()
,我没有得到任何结果。
可能是什么问题?我正在使用与教程中完全相同的代码。
这是代码,以防以某种方式帮助找到问题:
这是在app.js
中var db = mongoose.connection;
// console errors
db.on('error', console.error);
// load models
db.once('open', function() {
fs.readdirSync(__dirname = './models/').forEach(function(filename) {
if(~filename.indexOf('.js')) {require('./models/' + filename)};
});
});
mongoose.connect('mongodb://localhost/mydb');
*所以它基本上创建连接,从文件夹加载所有模型并控制错误,如果它发生(它没有)。
以下是我的用户模型中的代码:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var usersSchema = new Schema({
name: String,
age: Number,
admin: Boolean
});
var User = mongoose.model('Users', usersSchema);
我在这里插入用户:
var danny = new User({
name: 'Danny',
age: 25,
admin: true
});
danny.save(function(err, res) {
if (err) { return console.error(err) };
console.dir(res);
});
*保存时会注销该用户。
如果我找到所有用户,我会得到同一个用户的列表(因为它被意外保存了多次)。为了找到所有,我使用这个命令:
User.find(function(err, res) {
console.dir(res);
});
如果我在我的Ubuntu Linux上使用命令mongo
登录mongodb,然后我用命令use mydb
然后db.mydb.find().pretty()
切换到数据库它没有打印出来
答案 0 :(得分:0)
通过Mongo shell查询数据库时出现了一个小错误。您应该使用db.mydb.find().pretty()
。
db.users.find().pretty()
原因如下:
您正在使用Mongoose中的这一行连接到您的数据库:
mongoose.connect('mongodb://localhost/mydb');
最后的mydb
将是您的数据库的名称。因此,您可能希望将其更改为其他内容,以便将来更容易识别数据库。
在Mongo shell中,您正在使用use mydb
正确切换数据库。要查询您的集合,您需要以下语法:
DB + collection name + command() + extra stuff();
这意味着您将获得以下命令:
db.users.find().pretty();
您应该使用users
的原因是因为这一行:
var User = mongoose.model('Users', usersSchema);
Users
将是您收藏的名称。 请注意如果您使用User
,那么Mongoose会添加一个" s"到你的收藏品名称。要覆盖它,您可以使用以下行:
usersSchema('collection', 'user');
现在,您的收藏集将始终显示名称user
。