2016-12-14 105 views
0

我想在MongoDB中使用npm Mongoose和Robomongo作为我的GUI创建一个数据库。我遵循了http://mongoosejs.com/docs/index.html的MongoDB快速入门文档,但该数据库并未出现在Robomongo中。基本上,我只是想通过Node运行server.js文件时让数据库“出现”在Robomongo中。麻烦创建MongoDB的MongoDB数据库

当我从MongoDB Quickstart Docs中输入下面的代码时,Robomongo中没有创建/显示任何数据库。

var mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost/test'); 

var db = mongoose.connection; 
db.on('error', console.error.bind(console, 'connection error:')); 
db.once('open', function() { 
    // we're connected! 
}); 

var kittySchema = mongoose.Schema({ 
    name: String 
}); 

var Kitten = mongoose.model('Kitten', kittySchema); 

但是...... 当我在雇员id字段(如下图)添加到架构,则数据库会出现在Robomongo。 有人可以解释这两段代码之间的区别吗?为什么一个人工作,另一个不工作?

var kittySchema = mongoose.Schema({ 
    name: {type: String}, 
    employeeid:{ 
     type: Number, 
     unique: true, 
     required: true 

    } 
}); 

回答

1

这是因为employeeid上有一个索引(从unique,至少 - 可能required也不能100%确定如何猫鼬手柄必填项)。 Mongoose将自动创建具有在其上定义的索引的集合。

否则,将在您“执行”某项操作后创建集合(例如创建一个Kitten并使用.save())。

+1

Omg你是对的工作!我使用了.save()函数,并最终在数据库中使用name属性创建了集合。它直到我保存下来才出现。我认真地花了最后3个小时试图弄清楚这一点。谢谢!! – mfkogan

+1

没问题 - 这有点不直观,但它也是mongodb处理它的方式。例如,当使用mongo命令行时,您可以切换到数据库,并选择该数据库,但该数据库在插入之前不会存在 - 尽管您已选择该数据库。在mongodb问题跟踪器中有一些额外的阅读(这里是https://jira.mongodb.org/browse/SERVER-18313)(请参阅底部的注释)。 – dvlsg