首页 > 解决方案 > 无法读取未定义的属性“删除”

问题描述

我正在尝试在节点和猫鼬中创建一个登录页面,一旦我运行一个包含一些名为 seed.js 的测试数据的文件,就会弹出这个错误

const mongoose = require('mongoose');

const db = require('./dbconn');

const users = [
  { username: 'username', password: 'password' },
  { username: 'kelvin', password: 'password' },
];

const seed = async () => {
  try {
    await db.User.remove();
    console.log('DROP ALL USERS');

    await Promise.all(
      users.map(async user => {
        const data = await db.User.create(user);
        await data.save();
      }),
    );
    console.log('CREATED USERS', JSON.stringify(users));

    await Promise.all(
      polls.map(async poll => {
        poll.options = poll.options.map(option => ({ option, votes: 0 }));
        const data = await db.Poll.create(poll);
        const user = await db.User.findOne({ username: 'username' });
        data.user = user;
        user.polls.push(data._id);
        await user.save();
        await data.save();
      }),
    );
    console.log('CREATED POLLS', JSON.stringify(polls));
  } catch (err) {
    console.error(err);
  }
};

seed();

还有我的 schema.js 文件,它位于一个名为 dbconn- 的文件夹中

const mongoose = require('mongoose');
const bcrypt = require('bcrypt');

var userSchema = new mongoose.Schema({
    username:{
        type:String,
        required:true,
        unique:true,
    }
    ,password:{
        type:String,
        required:true,
    },
    created:{
        type:Date,
        default:Date.now
    },
});
userSchema.pre('save',async function(next){
    try{
        if(!this.isModified('password')){
            return next();
        }
        const hashed = await bcrypt.hash(this.password,10);
        this.password=hashed;
        return next();
    }
    catch(err){
        return next(err);
    }

})
module.exports = mongoose.model('User',userSchema);

dbconn 文件有一个 index.js 文件,该文件已经使用 mongoose 建立了 mongodb 连接

标签: node.jsmongodbmongoose

解决方案


推荐阅读