String
});
ФАЙЛ Б
const parentSchema = new Schema({
// Single subdocument
child: childSchema,
// Array of subdocuments
children: [ childSchema ]
});
—-
Вопрос:
Что нужно дописать в каждый файл чтоб childSchema была видна? Чтоб код не выдавал ошибку банально.
const childSchema = require("./childSchema")
да, но тогда children: [ childSchema ] не работает.
почему? если ты в childSchema экспортируешь модель - всё должно работать
Файл А. module.exports = mongoose.model( 'diceRolls', diceRollSchema ); Файл Б const DiceRoll = require( './DiceRoll' ); diceRolls: [ DiceRoll ],
и? я не могу понять в чём проблема, у меня так схемы описаны - в разных файлах
Ругается на эту строку diceRolls: [ DiceRoll ],
как ругается? без мата хоть?
throw new TypeError('Invalid schema configuration: ' + ^ TypeError: Invalid schema configuration: model is not a valid type within the array diceRolls.See http://bit.ly/mongoose-schematypes for a list of valid schema types.
чувство юмора - лучше, чем молодое гонево. Благодарю отдельно.
а если написать diceRolls: { type: [DiceRoll] }, ?
diceRolls: {type: [DiceRoll]}, ————- throw new TypeError('Invalid schema configuration: ' + ^ TypeError: Invalid schema configuration: model is not a valid type within the array diceRolls.See http://bit.ly/mongoose-schematypes for a list of valid schema types.
Ты не можешь модель засунуть в схему
Спасибо. Это я уже понял. Пока сделал иначе. но как правильно так и не понял ещё. пока пользуюсь вот так, не знаю насколько это костыли... // diceRolls: [ DiceRoll ], diceRolls: [{ type: Schema.ObjectId, ref: 'diceRolls', }],
Если бы ты понял, ты бы знал что ты сделал связь Но можно ее и не делать а указывать СХЕМУ, а не модель другой сущности https://mongoosejs.com/docs/subdocs.html
Ох уж эти молодые... выводы вперёд всего... 1) на скрине не мой код, но код из примера. 2) я понимаю, что модуль не получается, а как правильно - не понимаю. П.с. но педагогический талант стоит развивать. 😉
ну уж извините, какой смысл тогда было кидать код, если у вас по другому
я хотел понять, как правильно. В сообщениях это описал. Но для полной ясности: 1) в примерах и в доке идёт массив "схем", но при этом схемы описаны в одном файле (!). 2) у меня ситуация, где я должен дополнять ф-ционал уже имеющегося проекта, т.е. схемы уже используются и подвязаны везде. 3) вообще всё в один файл - несколько не целесообразно, тем паче, что это две разные ( отдельные ) сущности. 4) т.о. мне нужно было понять, как импортировать схему в другой файл - вопрос был об этом изначально. Т.е. " что дописать в каждый файл. чтоб работало правильно. Ниже цитирую задачу щё раз задача: — ФАЙЛ А. const childSchema = new Schema({ name: String }); ФАЙЛ Б const parentSchema = new Schema({ // Single subdocument child: childSchema, // Array of subdocuments children: [ childSchema ] }); —- Вопрос: Что нужно дописать в каждый файл чтоб childSchema была видна? Чтоб код не выдавал ошибку банально.
так а в чем проблема? Просто вместо модели экспортируешь схему module.exports = new Schema({ .. })
Предположу, что в коде, который использует экспорт модели. Есть предположение, что он будет крешится.
С чего вдруг, не будет
Т.е. я могу делать экспорт схемы и экспорт модели из одного файла и всё будет работать как и раньше?
тогда модель нужно в дефаулт ставить, а схему именованым? Чтоб не переписывать код... Или подлинковку придётся всё едино менять?
да, только пример выше неправильный module.exports = mongoose.model() module.exports.mySchema = mySchema
Благодарю. Опробую.
Обсуждают сегодня