我一直在等待 campgrounds.deleteMany() 函数,但它在 10 秒后仍在缓冲

问题描述 投票:0回答:1
 const path = require('path')
 const mongoose = require('mongoose')
 const cities = require('./cities')
 const Campground = require('../views/models/campground')
 const {descriptors,places} = require('./seedhelpers')

 mongoose.connect('mongodb://localhost:27017/yelp-camp', {
      useNewUrlParser:true,
      //useCreateIndex:true,
      //useFindAndModify:true,
      useUnifiedTopology:true
 })


 db = mongoose.connection;
 db.on("error", console.error.bind(console, "connection ERROR"));
 db.once("open", ()=>{
 console.log("Database connection open")
 })

 const sample = array => array[Math.floor(Math.random() * array.length )]

 const seedDB =  async()=>{
     await Campground.deleteMany({});
     for(let i=0; i<50; i++){
     const random1000 = Math.floor(Math.random() * 1000)
     const price = Math.floor(Math.random()*20)*10
     const camp = new Campground({
         author:'63dbcd28bd0379985929400c',
         location: `${cities[random1000].city}, ${cities[random1000].state} `, 
         title: `${sample(descriptors)} ${sample(places)}`,
         image:'https://source.unsplash.com/collection/483251',
         description:"Lorem ipsum, dolor sit amet consectetur adipisicing elit. Delectus labore magnam          reiciendis ex corrupti, nobis, obcaecati alias laboriosam voluptatum, cumque dignissimos accusamus? Voluptatibus accusamus voluptatum nulla vel doloribus, delectus voluptatem?",
         price
         })
         await camp.save()
     }
}

 seedDB().then(()=>{
 mongoose.connection.close();
})

显示缓冲10秒后。但我在这里等着它。我想删除所有露营地 每次运行文件时都会创建一组新的露营地。所以我给了它。

javascript mongodb asynchronous mongoose
1个回答
0
投票

当 Mongoose 说它正在缓冲命令时,这意味着您在建立连接之前发出它们。在命令上使用

await
并不能解决这个问题。

您的问题可能是由于在连接字符串中使用了

localhost
,它可能解析为该主机名的 IPv6 地址 (
::1
)。 MongoDB 通常只监听 IPv4 等价物,
127.0.0.1
,这意味着 Mongoose(和底层 MongoDB 库)正在尝试连接到错误的地址。

修复方法是在连接字符串中明确使用 IPv4 地址:

mongodb://127.0.0.1:27017/yelp-camp
© www.soinside.com 2019 - 2024. All rights reserved.