使用猫鼬时,无法在mongodb中找到Db

时间:2015-09-30 09:03:12

标签: node.js mongodb mongoose

以下代码完全正常,输出enter image description here

var mongoose=require('mongoose');
var dbUrl='mongodb://localhost:27017/trial1';

mongoose.connect(dbUrl);

//Creating schema
    var userSchema=new mongoose.Schema({
        name:String,
        email:String,
        createdOn:Date
    });


mongoose.model('User',userSchema);
var User=mongoose.model('User');

var userOne=new User({name:'Mike'});
console.log(userOne.name);


mongoose.connection.on('connected',function(){
console.log('mongoose connected to '+dbUrl);
});

mongoose.connection.close(function(){
    console.log('connection closed!!!!');
});

但是当我尝试在连接字符串(即)trial1中搜索db时,我无法找到它,屏幕截图如下。 enter image description here

当我说"使用trial1"在mongo shell中我按照以下屏幕截图获取输出。enter image description here这表示数据库存在或已创建。 为什么我无法看到db ??

3 个答案:

答案 0 :(得分:3)

所以答案是答案在布雷克斯的评论中,也是Pio的答案的一部分。

您没有看到数据库,因为您的Mongoose代码实际上并未在其中创建任何用户。实例化模型用户时,它将在内存中创建,但不在数据库中创建。要将用户插入数据库,必须在实例上调用方法save,如下所示:

var userOne=new User({name:'Mike'});
userOne.save(function(err, user){
  if (!err) {
    console.log('Now my user is saved in the database');
  }
})

因此,如果您不保存您的用户,那么在mongo shell中您将看不到数据库,因为它是空的,因此不存在。

答案 1 :(得分:1)

您使用什么用户来访问数据库,也许用户在数据库上没有身份验证。 或者,您的数据库URL应为:mongodb://用户名:密码@ localhost:27017 / trial1。 感谢。

答案 2 :(得分:-2)

要显示包含show dbs的数据库,您需要将至少一个文档插入其中一个db的集合中。查看更多details here