Im пытается присвоить populate свойство внутри схемы Mongoose, которая ссылается на свойство в другой внешней модели/схеме.Свойства схемы Mongoose с моделями во внешних файлах
я могу получить Mongoose населения/ссылающийся работу, когда две модели/схемы и запрос все в том же файле, но у меня есть мои настройки архитектуры, так что модели все в своих собственных файлах в пределах /модели каталог, и /models/index.js возвращает объект модели (очевидно, index.js знает, чтобы исключить себя)
Проблема Я бегу в, это так Schemas/модели все в своих файлах, когда я указываю имя модели как ссылку, она не работает. Я пытаюсь загрузить эту конкретную модель непосредственно внутри другой модели, и это также терпит неудачу.
FYI: Im достаточно новое для MongoDB и Mongoose, поэтому следующий код очень очень грубо, это в основном меня в процессе обучения
Group Модель
// models/group.js
'use strict'
module.exports = Mongoose => {
const Schema = Mongoose.Schema
const modelSchema = new Schema({
name: {
type: String,
required: true,
unique: true
}
})
return Mongoose.model(ModelUtils.getModelName(), modelSchema)
}
Расчетная модель
// models/account.js
'use strict'
module.exports = Mongoose => {
// I tried loading the specific model being referenced, but that doesn't work
const Group = require('./group')(Mongoose)
const Schema = Mongoose.Schema
const modelSchema = new Schema({
username: {
type: String,
required: true,
unique: true
},
_groups: [{
type: Schema.Types.ObjectId,
ref: 'Group'
}]
})
// Trying to create a static method that will just return a
// queried username, with its associated groups
modelSchema.statics.findByUsername = function(username, cb) {
return this
.findOne({ username : new RegExp(username, 'i') })
.populate('_groups').exec(cb)
}
return Mongoose.model(ModelUtils.getModelName(), modelSchema)
}
Как вы можете видеть в модели счета, Im пытается ссылаться на модели группы как _groups элемента, а затем запрос для учетной записи при заполнении связанных с ними групп внутри modelSchema.statics.findByUsername статического метода ..
Основной файл приложения
// app.js
const models = require('./models')(Mongoose)
models.Account.findByUsername('jdoe', (err, result) => {
console.log('result',result)
Mongoose.connection.close()
})
Почему именно вам требуется модель группы в модели учета? Глядя на данный код, он не кажется необходимым. В чем цель «ModelUtils»? – qqilihq
У меня на самом деле есть, что прокомментировал локально, это бросало ошибки. Я ** угадывал **, может быть, модель Accounts нуждалась в ней, поскольку на нее ссылались, но это был просто выстрел в темноте. – Justin