mongodb TypeError:使用mongoose时无法读取undefined的属性(阅读“length”)

ffdz8vbo  于 2023-01-08  发布在  Go
关注(0)|答案(1)|浏览(290)

我正在做一个todolist(angela yu),我正在尝试写入到一个新的数据库,但我不断得到错误.这是错误:

C:\Users\tunji\Desktop\webdev\todolist-v2-starting-files\node_modules\mongoose\lib\model.js:3519
        for (let i = 0; i < error.writeErrors.length; ++i) {
                                              ^

TypeError: Cannot read properties of undefined (reading 'length')
    at C:\Users\tunji\Desktop\webdev\todolist-v2-starting-files\node_modules\mongoose\lib\model.js:3519:47
    at collectionOperationCallback (C:\Users\tunji\Desktop\webdev\todolist-v2-starting-files\node_modules\mongoose\lib\drivers\node-mongodb-native\collection.js:133:26)
    at Timeout.<anonymous> (C:\Users\tunji\Desktop\webdev\todolist-v2-starting-files\node_modules\mongoose\lib\drivers\node-mongodb-native\collection.js:160:11)        
    at listOnTimeout (node:internal/timers:564:17)
    at process.processTimers (node:internal/timers:507:7)

这是密码:

const express = require("express");
const bodyParser = require("body-parser");
const mongoose = require("mongoose");

const app = express();
mongoose.connect('mongodb://localhost:27017/todolistDB');

app.set('view engine', 'ejs');

app.use(bodyParser.urlencoded({extended: true}));
app.use(express.static("public"));

// const itemsSchema = {
//   name: String
// };

const itemsSchema = new mongoose.Schema({
  name: String
});

const Item = mongoose.model("Item", itemsSchema);

const item1 = new Item({name: "Workout"});
const item2 = new Item({name: "skydive"});
const item3 = new Item({name: "bungee"});

const defaultItems = [item1, item2, item3];

Item.insertMany(defaultItems, function(err){
  if (err){
    console.log(err + "yea");
  } else {
    console.log("good to go");
  }
});

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

  res.render("list", {listTitle: "Today", newListItems: items});

});

app.listen(3000, function() {
  console.log("Server started on port 3000");
});

我已经检查了服务器,删除并安装了节点模块,一切,仍然没有修复,什么都没有

8i9zcol2

8i9zcol21#

我认为您不能连接到mongoose,根据mongoose文档,连接是一个异步方法。
尝试等待建立连接,然后写入数据库
示例:

const express = require("express");
const bodyParser = require("body-parser");
const mongoose = require("mongoose");

const app = express();
app.set('view engine', 'ejs');

app.use(bodyParser.urlencoded({extended: true}));
app.use(express.static("public"));

app.get("/", function(req, res) {
  res.render("list", {listTitle: "Today", newListItems: items});
});

app.listen(3000, function() {
  console.log("Server started on port 3000");
});

async function connect() {
    try {
        await mongoose.connect('mongodb://localhost:27017/todolistDB');
        console.log('Connected to MongoDB');
    } catch (error) {
        console.log('Could not connect to MongoDB');
        throw error;
    }
    const itemsSchema = new mongoose.Schema({
        name: String
    });
      
    const Item = mongoose.model("Item", itemsSchema);  
    const item1 = new Item({name: "Workout"});
    const item2 = new Item({name: "skydive"});
    const item3 = new Item({name: "bungee"});
    
    const defaultItems = [item1, item2, item3];
    
    Item.insertMany(defaultItems, function(err){
    if (err){
        console.log(err + "yea");
    } else {
        console.log("good to go");
    }
    });
      
}

connect();

``

相关问题