Node.js: собрание не определено - PullRequest
0 голосов
/ 29 января 2020

Я использую e js и пытаюсь получить некоторые данные во внешнем интерфейсе, но я говорю: собрание не определено, любой может подсказать мне, как это исправить.

полный контроллер paste.ofcode.org/ugq8gAVPUUd6W4xRZTpu4A

Данные примечания уже отображаются в таблице, находящейся во вкладках, и я хочу показать ее в другом месте, которое показано ниже код e js,

e js код:

  <% meeting.subjects.forEach(function(subject){ %>
       <div class="col-xs-3 col-sm-3 col-md-3">
           <div class="col-md-2 col-xs-12 pending-task-btn">
                  <span href="" class="btn btn-success btn-lg dashboard-icon" style="width: 200px; height: 150px;">
                       <p style="padding-top: 15px; font-size: 25px;
                                                        font-weight: bold;"><%= meeting.subject %></p>
                             <p style="font-size: 25px; font-weight: bold;">date</p>
                               <p style="font-size: 25px; font-weight: bold;">Upcoming</p>
                          </span>
                       </div> 
                 </div> 
             <% }) %>

nodejs код контроллера:

        var meetingJson = function (req, res) {
      req.selectSortColumn = function (sortColumn, sortDir) {
          switch (sortColumn) {
             case 0 :
                 return {'subject': sortDir};
             case 1:
                 return {'location': sortDir};
             case 2:
                 return {'date': sortDir};
             default:
                return {'subject': sortDir};
         }
     };
      dataTableUtil(req, function (options) {
         //search, search query for word search
         var search = options.search || '.*';
         var findCriteria = {};
         var searchCriteria = [{
            $or: [
                {'subject': {$regex: search, $options: 'i'}},
                {'location': {$regex: search, $options: 'i'}}
            ]
        }];

        findCriteria['$and'] = searchCriteria;
        findCriteria.attendees = {$elemMatch: {user: req.user._id}};
        //set find criteria based on the type of the meeting
        if (req.params.type == 'past') {
            findCriteria['$and'].push({
                $or: [
                    {date: {$lt: moment().startOf('day')}},
                    {status: 'completed'}
            ]});
        } else {
            findCriteria.date = {$gte: moment().startOf('day')};
            findCriteria.status = 'upcoming';
        }
        //get the meeting records and its count.
        async.parallel({
            data: function (cbListJson) {
                getMeetings(req, options, findCriteria, cbListJson);
            },
            count: function (cbListJson) {
                getMeetingsCount(req, options, findCriteria, cbListJson);
            }
        }, function (err, results) {
            if (err) {
                logger.error(err);
                res.json({error: true});
                return;
            }

            //create records of meeting in the format of data table.
            createMeetingRecords(req, results, function (err, responseJson) {
                if (err) {
                    logger.error(err);
                    res.json({error: true});
                    return;
                }
                res.json(responseJson);
            });
        });
    });
  };

где данные бэкэнда уже показывает с контроллера:

                               <div role="tabpanel">
                            <!-- Nav tabs -->
                            <ul class="nav nav-tabs" role="tablist">
                                <li role="presentation" class="active"><a href="#tab1" role="tab" data-toggle="tab">Upcoming</a>
                                </li>
                                <li role="presentation"><a href="#tab2" role="tab" data-toggle="tab">Completed</a>
                                </li>
                                <li role="presentation"><a href="#tab3" role="tab" data-toggle="tab">Tasks</a>
                                </li>
                            </ul>
                            <!-- Tab panes -->
                            <div class="tab-content">
                                <input type="hidden" id="pdfUrl" value="<%=pdfUrl%>">
                                <div role="tabpanel" class="tab-pane active fade in" id="tab1">
                                    <table class="display table" id="meeting-upcoming-table">
                                        <thead>
                                        <tr>
                                            <th>
                                                Subject
                                            </th>
                                            <th>
                                                Location
                                            </th>
                                            <th>
                                                Date
                                            </th>
                                            <th>
                                                Action
                                            </th>
                                        </tr>
                                        </thead>
                                        <tbody>


                                        </tbody>
                                    </table>

                                </div>
                                <div role="tabpanel" class="tab-pane fade in" id="tab2">
                                    <table class="display table" id="meeting-past-table">
                                        <thead>
                                        <tr>
                                            <th>
                                                Subject
                                            </th>
                                            <th>
                                                Location
                                            </th>
                                            <th>
                                                Date
                                            </th>
                                            <th>
                                                Action
                                            </th>
                                        </tr>
                                        </thead>
                                        <tbody>

                                        </tbody>
                                    </table>
                                </div>

                                <div role="tabpanel" class="tab-pane fade in" id="tab3">
                                    <div class="row">
                                        <input type="hidden" id="taskUserId" value="<%=currentUser._id%>">
                                        <div class="form-group col-md-2">
                                            <label for="status" class="control-label">Status</label>
                                            <select class="form-control" id="status">
                                                <option value="pending" selected>Pending</option>
                                                <option value="completed">Completed</option>
                                            </select>
                                        </div>
                                        <%if(isAdmin){%>
                                        <div class="form-group col-md-3">
                                                <label for="status" class=" col-md-12">User</label>

                                                <select class="form-control col-md-12" style="width:100%" name="taskUser" id="taskUser">
                                                    <option  selected value="all">All</option>
                                                </select>
                                        </div>
                                        <%}%>
                                    </div>

                                    <table class="display table" id="task-table">
                                        <thead>
                                        <tr>
                                            <th>
                                                Type
                                            </th>
                                            <th>
                                                Note
                                            </th>
                                            <th>
                                                Due Date
                                            </th>
                                            <th>
                                                    Task For 
                                                </th>
                                            <th>
                                                Actions
                                            </th>
                                        </tr>
                                        </thead>
                                        <tbody>

                                        </tbody>
                                    </table>
                                </div>
                            </div>

1 Ответ

0 голосов
/ 29 января 2020

? Единственная причина, по которой ваш meeting is not defined, заключается в том, что вы не передаете его в свой рендер, когда отправляете ответ клиенту.

?‍ ? Вы можете попробовать этот код ниже ?, вы можете скопировать его и изменить свою renderListOfMeetings функцию:

var renderListOfMeetings = async function (req, res) {
  try {
    checkRoles(req);
    const meetings = await Meeting.find({});
    console.log(meetings);
    res.render('meeting', {
        title: 'Meetings',
        pdfUrl : config.pdfUrl,
        isAdmin : req.roleAdmin,
        sectionBCommittee: [],
        meetings: meetings
    });
  }catch(ex) {
    console.log(ex.message);
    // do some stuff here, send error or some stuff
  }
};

После этого в вашем ejs убедитесь, что он выглядит так, как показано ниже:

<% meetings.subjects.forEach(function(meeting){ %>
  <div class="col-xs-3 col-sm-3 col-md-3">
    <div class="col-md-2 col-xs-12 pending-task-btn">
      <span href="" class="btn btn-success btn-lg dashboard-icon" style="width: 200px; height: 150px;">
          <p style="padding-top: 15px; font-size: 25px;
                                            font-weight: bold;"><%= meeting.subject %></p>
                <p style="font-size: 25px; font-weight: bold;">date</p>
                  <p style="font-size: 25px; font-weight: bold;">Upcoming</p>
              </span>
          </div> 
    </div> 
<% }) %>

Надеюсь, это поможет вам ?.

...