如果不存在,Mongoose.connect不会创建数据库

Kha*_*aha 5 mongoose mongodb node.js

我是NodeJs的新手,我正在学习如何使用NodeJS和Mongoose库连接到mongodb.据我所知,当我使用名称连接到数据库时,如果该名称的数据库不存在,那么mongoose将自动创建它,但它不会随我创建.这是我的代码:

const mongoose = require("mongoose");

mongoose.connect("mongodb://127.0.0.1:27017/mongo-test", {useNewUrlParser: true})
.then(() => console.log("Connected"))
.catch(err => console.log(err));
Run Code Online (Sandbox Code Playgroud)

猫鼬版: ^5.2.5

小智 9

我不是100%确定,但你还需要创建一个记录,以便创建数据库.仅显示连接字符串上的数据库名称是不够的.

干杯


Mar*_*ira 8

Pedro 是对的,当您将第一个文档保存在数据库中时,mongoose 将为该文档创建数据库和集合。

数据库的名称将是连接中指定的名称,在本例中为myapp

mongoose.connect('mongodb://localhost:27017/myapp');
Run Code Online (Sandbox Code Playgroud)

Mongoose 文档:连接

猫鼬用复数名称创建集合。

如果您有一个带有 Tank name 的模型,则集合名称将为tank

var schema = new mongoose.Schema({ name: 'string', size: 'string' });
var Tank = mongoose.model('Tank', schema);
Run Code Online (Sandbox Code Playgroud)

第一个参数是您的模型所针对的集合的单数名称。Mongoose 会自动查找模型名称的复数形式。因此,对于上面的示例,模型 Tank 用于数据库中的 tank集合。

Mongoose 文档:模型