Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Can';使用mongoose时在mongodb中找不到Db_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js Can';使用mongoose时在mongodb中找不到Db

Node.js Can';使用mongoose时在mongodb中找不到Db,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,下面的代码可以很好地给出输出 var mongoose=require('mongoose'); var dbUrl='1〕mongodb://localhost:27017/trial1'; mongoose.connect(dbUrl); //创建模式 var userSchema=newmongoose.Schema({ 名称:String, 电子邮件:String, createdOn:日期 }); mongoose.model('User',userSchema); var User=

下面的代码可以很好地给出输出

var mongoose=require('mongoose');
var dbUrl='1〕mongodb://localhost:27017/trial1';
mongoose.connect(dbUrl);
//创建模式
var userSchema=newmongoose.Schema({
名称:String,
电子邮件:String,
createdOn:日期
});
mongoose.model('User',userSchema);
var User=mongoose.model('User');
var userOne=新用户({name:'Mike'});
log(userOne.name);
mongoose.connection.on('connected',function()){
log('mongoose连接到'+dbUrl');
});
mongoose.connection.close(函数(){
log('连接关闭!!!!');
});
但是当我试图在连接字符串(ie)trial1中搜索db时,我找不到它,屏幕截图如下

同样,当我在MongoShell中说“UseTrial1”时,我得到的输出如下面的屏幕截图所示。这意味着数据库已存在或已创建。
为什么我看不到数据库???

要使用
show dbs
显示数据库,您需要在数据库的一个集合中插入至少一个文档。查看更多信息。

您使用哪个用户访问数据库,可能该用户在数据库上没有身份验证。 或者,您的数据库url应为:mongodb://username:password@本地主机:27017/trial1。
谢谢。

是的,答案在Blakes的评论中,也是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中您将看不到数据库,因为它是空的,因此不存在。

对不起,您没有告诉我们全部真相。除非您显式调用
mongoose.disconnect()
,否则连接永远不会关闭,您必须在某处调用它,但不显示它。对于“数据在哪里?”的问题,则显示的代码不会创建任何数据。MongoDB在实际插入和存在某些内容时分配数据库和集合名称空间。清单中没有一个显示发生了类似的情况。仅仅连接到数据库或集合本身并不能创建它。如果您调用了
user1.save(function(err){})
,那么就会有数据,而不是这里所要求的。提供的代码不创建任何数据。你是什么意思?他说他没有看到数据库。我刚才回答他为什么没有看到数据库。他没有看到数据库,因为没有数据库。完整阅读问题。什么都没有创造出来,不是我说的吗?他抱怨说他无法在show dbs中看到db。因为他没有在里面插入任何东西。这并不意味着它没有被逻辑地创建。。。当您说
use dbname
时,内存中有一个指向db
dbname
的指针。但从某种意义上说,它不是创建的,至少在磁盘上是这样。我找不到我写的部分,你可以显示一个不存在的数据库。我回答了为什么他在
show dbs
中看不到数据库。这正是他问题的最后一句话。谢谢朱利安。由于我能够console.log它,我误解了它是在DB中提交的。。。再次感谢您的澄清。。。。