Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> express.js + node.js не могу найти ошибку.
clocwerk  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 36
Пользователь №: 41868
На форуме: 1 год, 2 месяца, 16 дней
Карма: 1




Доброе утро форумчане. Изучаю основы node.js + express.js
Есть фал роутинга вот его часть:

var express = require('express');
var router = express.Router();
var Todo = require('../models/todo');

/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index');
});

router.get('/api/todos', Todo.getAllTodo);


Есть файл models/todo,js
Вот его часть

'use strict';


var modelTodo = require('../dbModels/modelTodo');
var Todo = {};
var todo;

Todo.getAllTodo = function(req, res) {
modelTodo.find(function(err, todo){
if(err){
res.send(err);
}
res.json(todo);
});
};


В общем задача сделать todo List, я сделал все работает. Но начальство сказало что модель вообще не должна знать о req и res

Вот я не могу понять как это сделать. Пробовал так:

Todo.getAllTodo = function() {
var responce;
responce = modelTodo.find(function(err, todo){
if(err){
return {'err': true, 'data':todo };
}
return {'err': false, 'data':todo };
});
return responce();
};
но тогда в консоли выводит вот это:
 
Server has started, we`re listening to port 3030
{ options: {},
safe: undefined,
_conditions: {},
_updateArg: {},
_fields: undefined,
_geoComparison: undefined,
op: 'find',
model:
{ [Function: model]
base:
{ connections: [Object],
plugins: [],
models: [Object],
modelSchemas: [Object],
options: {} },
modelName: 'Todo',
model: [Function: model],
db:
{ base: [Object],
collections: [Object],
models: {},
replica: false,
hosts: null,
host: '127.0.0.1',
port: 27017,
user: undefined,
pass: undefined,
name: 'todo',
options: [Object],
_readyState: 1,
_closeCalled: false,
_hasOpened: true,
_listening: true,
_events: {},
db: [Object] },
schema:
{ paths: [Object],
subpaths: {},
virtuals: [Object],
nested: {},
inherits: {},
callQueue: [],
_indexes: [],
methods: {},
statics: {},
tree: [Object],
_requiredpaths: undefined,
options: [Object],
_events: {} },
options: undefined,
collection:
{ collection: [Object],
opts: [Object],
name: 'todos',
conn: [Object],
queue: [],
buffer: false } } }

Так же пробовал сделать так:

Todo.getAllTodo = function() {
var responce;
modelTodo.find(function(err, todo){

if(err){
responce = {'err': true, 'data':todo };
}
responce = {'err': false, 'data':todo };
});
return responce;
};


По логике если переменная объявлена за границами функции, то внутри функции ее значение должно измениться, но в консоли вобще ничего не выводит.
P.S. В консоли вывожу так:
console.log(Todo.getAllTodo());

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

Это сообщение отредактировал clocwerk - 23.10.2015 - 11:26
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
clocwerk  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 36
Пользователь №: 41868
На форуме: 1 год, 2 месяца, 16 дней
Карма: 1




Ребят понял в чем проблема. Просто запрос

modelTodo.find(function(err, todo){

if(err){
responce = {'err': true, 'data':todo };
}
responce = {'err': false, 'data':todo };
});

еще не успевает выполнится, т.к. ассинхронный. Тему можно закрывать.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса