【问题标题】:ValidationError: isAdmin: Path `isAdmin` is required. (Mongodb)ValidationError: isAdmin: Path `isAdmin` 是必需的。 (蒙古数据库)
【发布时间】:2021-04-19 01:19:45
【问题描述】:

我是 Mongo 的新手,我正在做一个教程,我可以让它工作。当我尝试导入数据时,我一直在控制台上看到此错误。

> proshop@1.0.0 data:import
> node backend/seeder

the options [useCrateIndexes] is not supported
(node:40078) DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
MongoDB Connected: cluster0-shard-00-02.8p56h.mongodb.net
ValidationError: isAdmin: Path `isAdmin` is required.
npm ERR! code 1
npm ERR! path /Users/googledrive/Documents/proshop
npm ERR! command failed
npm ERR! command sh -c node backend/seeder

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/googledrive/.npm/_logs/2021-01-14T00_02_04_851Z-debug.log
❯ node --trace-deprecation ...
node:internal/modules/cjs/loader:928
  throw err;
  ^

Error: Cannot find module '/Users/googledrive'
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:925:15)
    at Function.Module._load (node:internal/modules/cjs/loader:769:27)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:76:12)
    at node:internal/main/run_main_module:17:47 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}

这是我的数据库的配置文件

import mongoose from 'mongoose';
import colors from 'colors';

const connectDB = async () => {
  try {
    const conn = await mongoose.connect(process.env.MONGO_URI, {
      useUnifiedTopology: true,
      useNewUrlParser: true,
      useCreateIndex: true,
    });

    console.log(`MongoDB Connected: ${conn.connection.host}`.cyan.underline);
  } catch (error) {
    console.error(`Error: ${error.message}`.red.underline.bold);
    process.exit(1);
  }
};

我尝试将 useCreateIndex: true 替换为 useCreateIndexes: true,但它不起作用。我正在使用 mongoatlas。我阅读了我的所有代码,但找不到错误

import mongoose from 'mongoose';
import dotenv from 'dotenv';
import colors from 'colors';
import users from './data/users.js';
import products from './data/products.js';
import User from './models/userModel.js';
import Product from './models/productModel.js';
import Order from './models/orderModel.js';
import connectDB from './config/db.js';

dotenv.config();

connectDB();

const importData = async () => {
  try {
    await Order.deleteMany();
    await Product.deleteMany();
    await User.deleteMany();

    const createdUsers = await User.insertMany(users);

    const adminUser = createdUsers[0]._id;

    const sampleProducts = products.map((product) => {
      return { ...product, user: adminUser };
    });

    await Product.insertMany(sampleProducts);

    console.log('Data Imported!'.green.inverse);
    process.exit();
  } catch (error) {
    console.error(`${error}`.red.inverse);
    process.exit(1);
  }
};

const destroyData = async () => {
  try {
    await Order.deleteMany();
    await Product.deleteMany();
    await User.deleteMany();

    console.log('Data Destroyed!'.red.inverse);
    process.exit();
  } catch (error) {
    console.error(`${error}`.red.inverse);
    process.exit(1);
  }
};

if (process.argv[2] === '-d') {
  destroyData();
} else {
  importData();
}

这是教程的github仓库https://github.com/bradtraversy/proshop_mern/blob/master/backend/config/db.js

【问题讨论】:

  • 你好,可以分享一下解决方法吗?我也遇到了。

标签: database mongodb mongoose


【解决方案1】:

用户需要指定“isAdmin”字段或默认值。确保在 './models/userModel.js' 中的 isAdmin 字段如下所示:

isAdmin: {
      type: Boolean,
      required: true,
      default: false,
    }

【讨论】:

    猜你喜欢
    • 2016-09-07
    • 1970-01-01
    • 2015-11-04
    • 2018-05-15
    • 2016-07-03
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多