mon goose .connect () не создает базу данных? - PullRequest
0 голосов
/ 09 апреля 2020

Я использую метод mon goose .connect (), но он не может создать БД, я даже вставил некоторые документы в БД с помощью insertMany (), но это не дает мне никакой ошибки и не создает БД, как когда я проверил мой пн go 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}) }

** когда я использовал метод insertMany вне app.get (), тогда все записи были вставлены, я только начал изучать mongoDB извините, если заранее это была глупая ошибка ** подробный ответ приветствуется!

Ответы [ 3 ]

1 голос
/ 09 апреля 2020

Рассмотрим следующие три строки вашего кода:

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

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

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

В [2] вы делаете запрос, предположительно, он не возвращает результатов, и вы попадаете на [3]. Однако в [3] вы ссылаетесь на фиксированный набор, определенный в [1], который имеет длину 3. Таким образом, оператор if в [3] никогда не вводится.

0 голосов
/ 09 апреля 2020

Вы можете следовать этому коду

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)
})
0 голосов
/ 09 апреля 2020

Код в порядке.

mon goose .connect () вызов в порядке. Так как вы пишете это в форме Promise, проблема заключается в Unhandled Promise Rejection из-за сбоя соединения.

Консоль ошибки, сообщение об ошибке даст нам лучший обзор.

Принимая во внимание возможные ошибки, Это может произойти, если вы используете обработчик промежуточного программного обеспечения app.use или router.use.

Пожалуйста, подтвердите ошибку, выпустите сообщение об ошибке. Так что я могу помочь вам дальше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...