Предупреждение уже показывает вам: «Вы можете только гнездо использовать refs или массивы». Это дизайн мангуста.
Но вы можете сделать это:
var MySchema = new mongoose.Schema({
objectId: String,
parent: {
type: mongoose.Schema.ObjectId,
ref: 'MySchema'
},
})
Это будет использовать схему внутри схемы, тогда вы можете использовать «предварительное сохранение» для обновления данных вашего родителя. Или вы можете использовать массив ссылок и сохранить только один элемент.
Что делать, экспортируйте схемы, а не модели, чтобы вы могли их вложить. например:
module.exports = MySchema;
Затем у меня есть некоторый appModel для установки моделей моей коллекции схем, например this (app_model.js):
if(mongoose.modelNames().indexOf('mySchema') < 0) mongoose.model('mySchema', mySchema);
Я вижу две основные вещи, которые необходимо исправить: 1: клиент из commands.js 2: командная функция в основном файле
1 - В commands.js , вы создали новый клиент. Если у вас есть только эта команда, это не вызовет никаких проблем, так как client
не используется в вашем коде, но когда вам это понадобится, это не сработает, так как оно должно быть таким же, как в главном файле. У вас есть два возможных решения: установка вашего клиента как глобального или требующий основного модуля. Если ваш бот не должен публиковаться в общедоступном пакете, вы можете сохранить global.client = client;
, а затем получить доступ к нему как client
в каждом другом файле. Альтернативой является экспорт клиента из основного модуля (module.exports = {client};
), а затем требуемый основной файл в commands.js (var {client} = require("./index.js");
).
2 - В commands.js вы экспортируете функцию help
, поэтому, когда вы вызываете ее index.js , вы должны использовать скобки и передавать сообщение в качестве аргумента. Попробуйте что-то вроде этого:
//in the switch statement
case "help":
cmds.help(message);
break;
Надеюсь, это поможет вам, сообщите мне, если у вас возникнут другие вопросы.