В типе схемы мангуста есть ошибка

1

Я разрабатываю приложение узла с помощью mongodb, используя ODM Mongoose. Я получаю сообщение об ошибке, когда типы ссылок ссылаются на схемы, которые находятся в разных файлах.

У меня есть следующий код в файле companyQuery.js:

const mongoose = require('mongoose');
const Company = require('./company');
const connectionString = 'mongodb://localhost/company'

mongoose.connect(connectionString);

mongoose.connection.on('connected', () => {
    console.log('Mongoose connected');
})
mongoose.connection.on('disconnected', () => {
    console.log('Mongoose is disconnected');
})
mongoose.connection.on('error', (err) => {
    console.log(err, 'mongoose error');
})

который ссылается на файл company.js:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const companySchema = new Schema({
        name: {
    type: String, 
    required: true
},
founded: Date,
employees: Number,
active: true;
products: [String],
ceo: {
    name: String,
    age: Number
}
});
const Company = mongoose.model('Company', companySchema);
module.exports = Company;

Это ошибка, которую я получаю:

/Users/ashley/salty-sardines/mongoose-3/node_modules/mongoose/lib/schema.js:696
    throw new TypeError('Undefined type ' + name + ' at ' + path +
    ^

TypeError: Undefined type 'undefined' at 'active'
  Did you try nesting Schemas? You can only nest using refs or arrays.
    at Function.Schema.interpretAsType (/Users/ashley/salty-sardines/mongoose-3/node_modules/mongoose/lib/schema.js:696:11)
    at Schema.path (/Users/ashley/salty-sardines/mongoose-3/node_modules/mongoose/lib/schema.js:545:29)
    at Schema.add (/Users/ashley/salty-sardines/mongoose-3/node_modules/mongoose/lib/schema.js:407:12)
    at new Schema (/Users/ashley/salty-sardines/mongoose-3/node_modules/mongoose/lib/schema.js:110:10)
    at Object.<anonymous> (/Users/ashley/salty-sardines/mongoose-3/company.js:3:44)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:20:18)
    at Object.<anonymous> (/Users/ashley/salty-sardines/mongoose-3/companyQuery.js:2:17)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)

Проблема реплицируется на трех разных машинах из моего репозитория, и я переписал код четыре раза с тем же результатом. Если я удалю const Company = require('./company'); и объединить информацию на одном листе, я могу заставить его работать. Любая помощь будет оценена, поскольку я прочитал все другие сообщения об этом типе ошибок, и никто не предоставил мне решение.

  • 0
    Один из вариантов отладки - закомментировать все поля схемы и раскомментировать одно за другим, пока вы не выясните, какое из них является проблематичным, а затем направить свои усилия на это конкретное поле / тип.
  • 0
    Я попробовал это, к сожалению, это не помогло, даже когда в схеме вообще ничего не было. Спасибо за предложение.
Теги:
mongoose

1 ответ

1
Лучший ответ

Вероятно, вам просто нужно заменить это:

active: true,

С этим:

active: {
  type: Boolean,
  default: true,
}
  • 0
    Ошибка все еще там, та же самая, поэтому я обновил вопрос с вашим улучшением, чтобы избежать путаницы.
  • 0
    @amfueger вы перезапустили свое приложение после изменения? Я только что попробовал вашу исходную схему и воспроизвел ошибку, и с моим исправлением все в порядке.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню