Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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
Mongodb mongoose.connect()不是在创建数据库吗?_Mongodb_Express_Mongoose - Fatal编程技术网

Mongodb mongoose.connect()不是在创建数据库吗?

Mongodb mongoose.connect()不是在创建数据库吗?,mongodb,express,mongoose,Mongodb,Express,Mongoose,我正在使用mongoose.connect()方法,但它无法创建数据库,我甚至在其中插入了一些文档 使用insertMany()创建数据库,但它既没有给我任何错误,也没有像我检查mongo Shell todolistDB时那样创建数据库 const express = require('express') const bodyParser = require('body-parser') const mongoose = require('mongoose') mongoose.connect

我正在使用mongoose.connect()方法,但它无法创建数据库,我甚至在其中插入了一些文档 使用insertMany()创建数据库,但它既没有给我任何错误,也没有像我检查mongo Shell todolistDB时那样创建数据库

const express = require('express')
const bodyParser = require('body-parser')
const mongoose = require('mongoose')
mongoose.connect('mongodb://localhost:27017/todolistDB', {
        useNewUrlParser: true,
        useUnifiedTopology: true },
    function (err) {
        if (err) {
            console.log(err);
} else {console.log('server is connected');}})
const itemsSchema = mongoose.Schema({name: {type: String,required: true }})
const Item = mongoose.model('Item', itemsSchema)
const item1 = new Item({name: 'Welcome to your todo list!'})
const item2 = new Item({name: 'Hit + button to add new item'})
const item3 = new Item({name: '<-- click to delete a item!'})
const defaultItems = [item1, item2, item3]

app.get('/', function (req, res) {

Item.find({}, function (err, result) {

        if (defaultItems.length===0) {
                                          **even after insertmany method todolistDB is not created**
Item.insertMany(defaultItems, function (err) {   
                if (err) {
                    console.log(err);
                  } else {
                    console.log('new record inserted successfully!');}});
        } else {
            res.render('list', {listTitle: 'today',latestItems: result}) }
const express=require('express'))
const bodyParser=require('body-parser')
const mongoose=require('mongoose')
猫鼬mongodb://localhost:27017/todolistDB', {
useNewUrlParser:true,
useUnifiedTopology:true},
功能(err){
如果(错误){
控制台日志(err);
}else{console.log('server is connected');})
const itemschema=mongoose.Schema({name:{type:String,required:true})
const Item=mongoose.model('Item',itemschema)
const item1=新项目({name:'欢迎来到您的待办事项列表!'})
const item2=新项({name:'点击+按钮添加新项'})

const item3=new Item({name:'代码非常好

调用mongoose.connect()没问题。因为您是以承诺形式编写的,所以问题是未处理的连接失败承诺拒绝

控制台的错误,错误信息将给我们更好的一瞥

关于错误的可能性,如果您使用中间件处理程序app.use或router.use,则可能会发生错误


请控制错误,放下错误消息。这样我可以进一步帮助您。

考虑以下三行代码:

[1] const defaultItems = [item1, item2, item3]

[2] Item.find({}, function (err, result) {

[3] if (defaultItems.length===0) {

在[2]中,您正在执行一个查询,可能它不返回任何结果,您可以访问[3]。但是在[3]中,您引用的是[1]中定义的固定集,其长度为3。因此,永远不会输入[3]中的if语句。

您可以按照以下代码进行操作。

mongoose.connect('mongodb://localhost:27017/todolistDB', {
  useNewUrlParser: true,
  useUnifiedTopology: true,
  useCreateIndex: true,
  useFindAndModify: false
})

mongoose.connection.on("connected", () => {
  console.log("Mongodb connected")
})

mongoose.connection.on("error", errMsg => {
  console.log("Error connecting database. Msg: " + errMsg)
})

你的if检查总是失败,因此你永远无法到达插入文档的部分。这是一个怎样的答案?这对他没有任何帮助,也与他遇到的问题无关。