Mongoose .find работает, пока не введены критерии запроса - PullRequest
0 голосов
/ 18 марта 2019

Если я добавлю свой «запрос» в workflow.find {}, я не получу ответ.

Я думаю, что мое наименование для моих поддокументов неверно.

Мне нужно иметь возможность перейти к уровню рабочих процессов и компонентов.

Я пытался удалить текст. часть и даже вызов поля имени напрямую, но не уверен, что мне не хватает.

router.get('/findcomponent', (req, res) =>{
        const workflow = require('../models/WorkFlowOnly.js')
        const id = req.params.id
        const query = {'texto.Workflow.Name' : 'Test WE'} //works


    workflow.find(query, function(err, data) { console.log(data)  /* ... */});//works

    })   

Журнал консоли с отфильтрованными результатами

{ _id: 5c8fbe0ed6dd2e0f6c5f7990,
  texto:
   { Workflow:
      { ID: 'Workflow-STARK-ahinson1-2019.03.03-20.14.43-VYHP',
        LocalCachePath: 'Z:\\MAITest\\Cache',
        SharedCachePath: null,
        Name: 'Test WE',
        Desc: 'I\'m testing this',
        Components: [Object] } },
  Components: [] }


Data

запись из консоли, когда запрос не определен:

[ { _id: 5c8fad698481aa2a881f9caa,
    texto: { Workflow: [Object] },
    Components: [] },
  { _id: 5c8fbe0ed6dd2e0f6c5f7990,
    texto: { Workflow: [Object] },
    Components: [] } ]

Обновление: это сработало, спасибо вам большое, я сталкиваюсь с подобной проблемой, когда пытаюсь вырыть уровень компонента. Это мой новый код запроса, который я пытаюсь, я пробовал некоторые другие варианты, вот два.

const query = {'texto.Workflow.Components.Component.0.ID' : 'ImageReaderComponentGRQL'} 
const query = {'texto.Workflow.Components.Component.Component.0.ID' : 'ImageReaderComponentGRQL'} 
const query = {'texto.Workflow.Components.Component.0.ID' : 'ImageReaderComponentGRQL2'} //THIS WORKS -----UPDATED

Ниже приведена копия / вставка представления списка mongodb тестовой записи.

id:5c8fbe0ed6dd2e0f6c5f7990
texto:Object
Workflow:Object
ID:"Workflow-2019.03.03-20.14.43-VYHP"
LocalCachePath:"Z:\MAITest\Cache"
SharedCachePath:null
Name:"Test WE"
Desc:"I'm testing shit so fuck off"
Components:Object
Component:Array
0:Object
ID:"ReaderComponentGRQL2"
Type:"ReaderComponent"
Name:"ReaderU08"
Desc:null
Properties:Object
InputPorts:null
OutputPorts:Object
1:Object
2:Object

Ответы [ 3 ]

0 голосов
/ 18 марта 2019

Попробуйте использовать, как показано ниже:

   router.get('/findcomponent', (req, res) =>{
        const workflow = require('../models/WorkFlowOnly.js')
        const id = req.params.id
        // const query = "['texto.Workflow.Name' : 'Test WF'}"
        const query = { 'texto.Workflow.$.Name' : 'Test WF' }

    workflow.find(query, function(err, data) { 
        console.log(data)  /* ... */
       });
    })   

или при желании вы можете сделать это без использования const query, как показано ниже:

       workflow.find({'texto.Workflow.Name': "TEST WF"}, function(err, data) { 
            console.log(data)  /* ... */
           });
        })  
0 голосов
/ 18 марта 2019

Спасибо всем за помощь, вот что я понял Этот запрос работал для моего массива под-документов

const query = {'texto.Workflow.Components.Component.0.ID' : 'ImageReaderComponent'} 
0 голосов
/ 18 марта 2019

Я думаю, что ваш монго query неверен

const query = {'texto.Workflow.Name' : 'Test WF'} // here
workflow.find(query, function(err, data) { console.log(data)  /* ... */});

})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...