" MissingSchemaError"当使用mongoose-seeder播种数据库时

时间:2018-04-02 13:09:42

标签: javascript node.js mongodb express mongoose

我正在尝试使用mongoose-seeder播种数据库,并且我不断收到MissingSchemaError。我确信我正在正确设置架构,所以我很遗憾为什么会发生这种情况。 我设置架构的文件如下所示:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const UserSchema = new Schema({
 fullName: {
  type: String,
  required: true,
 trim: true
 },
 emailAddress: {
  type: String,
 unique: true,
 required: true,
 match: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)| . 
(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA- 
 Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
},
password: {
 type: String,
 required: true
}
});

const User = mongoose.model('User', UserSchema);

module.exports.User = User;

并在我的主文件中:

'use strict';

// load modules
const morgan = require('morgan');
const mongoose = require('mongoose');
const seeder = require('mongoose-seeder');
const data = require('./data/data.json');
const express = require('express');
const app = express();


//set up database connection
mongoose.connect("mongodb://localhost:27017/courseapi");
const db = mongoose.connection;

//handle err connecting to db
db.on("error", (err) => console.error("Error connecting to database: ", 
err));

//success
db.once("open", () => {
  console.log("Connected to database");
  seeder.seed(data, {dropDatabase: false}).then(function(dbData){
      console.log("Database seeded!");
  }).catch(function(err){
    console.error("Error seeding database", err);
  })
});

任何帮助都会非常感激!

3 个答案:

答案 0 :(得分:0)

不维护mongoose-seeder包。因此建议替代导入数据。您可以使用mongoimport在CLI(命令行界面)中填充MongoDB。它会将JSON文件加载到指定的MongoDB实例&amp;采集。您只需要在执行之前运行mongod实例。

请浏览walkthrough

答案 1 :(得分:0)

谢谢你的帮助!该项目需要使用模块来播种数据,因此我最终使用了mongoose-seed。 (需要重新格式化json,但幸好文件相对较小)

答案 2 :(得分:0)

最好使用主动维护的Seedgoose。它是具有智能参考支持的最终猫鼬播种机。