2014-12-10 2 views
-1

Я пытаюсь получить все имена мангуст модели и перебирать корыта их зрения (test.jade)итерация корыто mongoose.models

маршрут

router.get('/dashboard', ensureAuthenticated, function (req, res) { 
    var models = mongoose.models; 
    console.log(models); 
    res.render('test',{data:models}); 
}) 

я получил этот журнал на консоли узла:

{ User: 
    { [Function: model] 
    base: 
     { connections: [Object], 
     plugins: [], 
     models: [Circular], 
     modelSchemas: [Object], 
     options: [Object] }, 
    modelName: 'User', 
    model: [Function: model], 
    db: 
     { base: [Object], 
     collections: [Object], 
     models: [Circular], 
     replica: false, 
     hosts: null, 
     host: 'localhost', 
     port: 27017, 
     user: '', 
     pass: '', 
     name: 'simpleblog', 
     options: [Object], 
     otherDbs: [], 
     _readyState: 1, 
     _closeCalled: false, 
     _hasOpened: true, 
     _listening: true, 
     _events: {}, 
     db: [Object] }, 
    discriminators: undefined, 
    schema: 
     { paths: [Object], 
     subpaths: {}, 
     virtuals: [Object], 
     nested: {}, 
     inherits: {}, 
     callQueue: [], 
     _indexes: [], 
     methods: {}, 
     statics: {}, 
     tree: [Object], 
     _requiredpaths: [], 
     discriminatorMapping: undefined, 
     _indexedpaths: undefined, 
     options: [Object], 
     _events: {} }, 
    options: undefined, 
    collection: 
     { collection: [Object], 
     opts: [Object], 
     name: 'users', 
     conn: [Object], 
     queue: [], 
     buffer: false } }, 
    Comment: 
    { [Function: model] 
    base: 
     { connections: [Object], 
     plugins: [], 
     models: [Circular], 
     modelSchemas: [Object], 
     options: [Object] }, 
    modelName: 'Comment', 
    model: [Function: model], 
    db: 
     { base: [Object], 
     collections: [Object], 
     models: [Circular], 
     replica: false, 
     hosts: null, 
     host: 'localhost', 
     port: 27017, 
     user: '', 
     pass: '', 
     name: 'simpleblog', 
     options: [Object], 
     otherDbs: [], 
     _readyState: 1, 
     _closeCalled: false, 
     _hasOpened: true, 
     _listening: true, 
     _events: {}, 
     db: [Object] }, 
    discriminators: undefined, 
    schema: 
     { paths: [Object], 
     subpaths: {}, 
     virtuals: [Object], 
     nested: {}, 
     inherits: {}, 
     callQueue: [], 
     _indexes: [], 
     methods: {}, 
     statics: {}, 
     tree: [Object], 
     _requiredpaths: undefined, 
     discriminatorMapping: undefined, 
     _indexedpaths: undefined, 
     options: [Object], 
     _events: {} }, 
    options: undefined, 
    collection: 
     { collection: [Object], 
     opts: [Object], 
     name: 'comments', 
     conn: [Object], 
     queue: [], 
     buffer: false } }, 
    Article: 
    { [Function: model] 
    base: 
     { connections: [Object], 
     plugins: [], 
     models: [Circular], 
     modelSchemas: [Object], 
     options: [Object] }, 
    modelName: 'Article', 
    model: [Function: model], 
    db: 
     { base: [Object], 
     collections: [Object], 
     models: [Circular], 
     replica: false, 
     hosts: null, 
     host: 'localhost', 
     port: 27017, 
     user: '', 
     pass: '', 
     name: 'simpleblog', 
     options: [Object], 
     otherDbs: [], 
     _readyState: 1, 
     _closeCalled: false, 
     _hasOpened: true, 
     _listening: true, 
     _events: {}, 
     db: [Object] }, 
    discriminators: undefined, 
    schema: 
     { paths: [Object], 
     subpaths: {}, 
     virtuals: [Object], 
     nested: {}, 
     inherits: {}, 
     callQueue: [], 
     _indexes: [], 
     methods: {}, 
     statics: {}, 
     tree: [Object], 
     _requiredpaths: undefined, 
     discriminatorMapping: undefined, 
     _indexedpaths: undefined, 
     options: [Object], 
     _events: {} }, 
    options: undefined, 
    collection: 
     { collection: [Object], 
     opts: [Object], 
     name: 'articles', 
     conn: [Object], 
     queue: [], 
     buffer: false } } } 

вид

for(var prop in data) 
    p #{prop}: #{data[prop]} 

проблема заключается в том, что я не мог получить какой-либо результат после операции итерации по мнению

+0

ли остальной вид из 'теста. jade' получится правильно? Если вы добавите 'console.log (models)' прямо после 'router.get (...) {', вы видите, что что-то печатается в консоли узла? – pbkhrv

+0

@pbkhrv 'test.jade' получается правильно обработанным, я его протестировал. и я также зарегистрировал модели внутри router.get, я получил результат, который я поделюсь им при следующем редактировании. – semirturgay

+0

Я ожидаю увидеть что-то вроде журнала node.js ... в настоящее время я не вижу никакого вывода на моем представлении – semirturgay

ответ

2

В вашем маршруте, попробуйте следующее:

router.get('/dashboard', ensureAuthenticated, function (req, res) { 
    var models = Object.keys(mongoose.models); 
    var schemas = mongoose.modelSchemas; 
    res.render('test',{models: models, schemas: schemas}); 
}) 

Затем в файле макета, попробуйте это (при условии, что вы используете нефрит)

each model in models 
    p #{model} : 
     each path in schemas[model].paths 
      div #{JSON.stringify(path)} 
+0

спасибо .. он отлично работает ... так что было не так на моем пути – semirturgay

+0

Основная проблема заключалась в том, как вы обрабатывали цикл в вашем файле Jade. Вы использовали 'for (var prop in data)', что недопустимо для Jade, поэтому он игнорировал эту строку. Поскольку он игнорировал эту строку, когда она дошла до следующей строки, 'prop' был не определен, поэтому вы не получили никакого вывода. –

+0

да, я получаю именно то, что хочу с вашими изменениями. Еще раз спасибо :) – semirturgay

0

Это трудно сказать, но это выглядит, как вы, возможно, войдя в функцию, которая строит модель, а не экземпляр модели данные.

Смежные вопросы