Model.find не является функцией в мангусте - PullRequest
0 голосов
/ 24 сентября 2018

Я новичок в узле и mongodb.Я пытаюсь запросить другую модель (событие) из другой модели (компании).

В основном в модели Event есть поле с именем company.Я хотел бы получить компанию, где id - это идентификатор события.

У меня есть все идентификаторы событий в массиве.

 let eventIds = [ 5b76a8139dc71a4a12564cd2,
  5b9a1685c239342d4635466c,
  5b8e753bdbccf803e906aaeb ]

Схема событий -

var EventSchema = new Schema({
        title:{type:String,require:true,index:true},
        description:{type:String,require:false},
        companies:[
            {type:Schema.Types.ObjectId,ref:"Company",require:true,index:true}
        ]
});

В модели компании -

var mongoose = require('mongoose'),
    Schema = mongoose.Schema,
    Event = require('./event.js');

var CompanySchema = new Schema({
        name:{type:String,require:true,index:true},
        description:{type:String,require:false}},{
        //no auto indexing at the beginning
        autoIndex:true,

        //no strict to save changes in the valuesBeforeChange field.
        strict:false}
);

CompanySchema.static("searchCompanies",function(callback,criteria){

    "use strict";
    var That = this;
    var query = That.find();

    async.waterfall([

         function(callback){
             let eventIds =  [5b76a8139dc71a4a12564cd2,5b9a1685c239342d4635466c,5b8e753bdbccf803e906aaeb ];
             Event.find({ $in: eventIds}, function(err, docs){
                   console.log(docs);
             });
     }

],function(err,companyResultObj){
         callback(err,companyResultObj);
    });
});

Я получаю Event.find is not a function сообщение об ошибке.Как я могу запросить другую модель (событие) от другой модели (компании)

Любая помощь высоко ценится.

Ответы [ 3 ]

0 голосов
/ 24 сентября 2018

Как вы экспортируете свою EventModel?Предполагая, что вы экспортируете его как модуль (module.exports = {EventModel}), вы хотите перейти к «const Event = require ('./ event.js'). EventModel;"

Затем просто перейдитес "Event.find (..."

0 голосов
/ 24 сентября 2018

Не знаю, почему, но мне пришлось сделать это следующим образом.

Event.find({ $in: eventIds}, function(err, docs){

К

mongoose.model('Event').find({_id:eventIds}, function(err, docs){

, который вернул 3 документа, которые являются правильными.

0 голосов
/ 24 сентября 2018

Используйте псевдоним, когда вам нужен файл

EventModel = require('./event.js');
then 
EventModel.find({ $in: eventIds}, function(err, docs){
   console.log(docs);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...