Монго запрос от проблемы обратной петли - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь запросить в монго дБ из модели loopback.Но я не получаю никаких результатов от monogdb

Вот так выглядит мой документ в mongodb

{"_id":"5b9f8bc51fbd7f248cabe742",
"agentType":"Online-Shopping",
"projectId":"modroid-server",
"labels":["category","price"],
"phrases":["Look for _^ct_ in _^p_ ",
"I need _^ct_ in _^p_",
"can you search for _^ct_ in _^p_"]
}

, вот мой файл источника данных

{
"db": {
"name": "db",
"connector": "memory"
},
"modroid-server": {
"host": "localhost",
"port": 27017,
"url": "",
"database": "modroid-server",
"password": "",
"name": "modroid-server",
"user": "",
"connector": "mongodb"
  }
}

, а вотКонфигурационный файл модели

{
"_meta": {
"sources": [
  "loopback/common/models",
  "loopback/server/models",
  "../common/models",
  "./models"
],
"mixins": [
  "loopback/common/mixins",
  "loopback/server/mixins",
  "../common/mixins",
  "./mixins"
]
},
"User": {
"dataSource": "db"
},
"AccessToken": {
"dataSource": "db",
"public": false
},
"ACL": {
"dataSource": "db",
"public": false
},
"RoleMapping": {
"dataSource": "db",
"public": false,
"options": {
  "strictObjectIDCoercion": true
}
},
 "Role": {
"dataSource": "db",
"public": false
 },
"agent": {
"dataSource": "modroid-server",  // here is my mongodb
"public": true
 }
}

и вот мой код для запроса в mongodb

module.exports = function (Agent) {
Agent.getDataSource().connector.connect(function (err, db) {
        var collection = db.collection("text-responses");
        collection.find({ "where": { "labels":  ["category", "price"]  } }, function (err, res) { // define whichever query you need
            console.log("collection find res:"+res);
            console.log("collection find err:"+err);

            if(err) {
            cb(err);
            return;
          }
          res.toArray(function (err, realRes) { // this part is crucial
          // otherwise if you try to print res you will get a dump of the db object
            if(err) {
              cb(err);
              return;
            }
            console.log("documnet result:"+realRes);
            console.log("document err:"+err);
          })
      })
    }
    );
}

, и когда я нажимаю на остальные API.Я получаю этот вывод

collection find res:[object Object]
collection find err:null
documnet result:
document err:null

Пожалуйста, помогите мне, где я делаю что-то не так.Я застрял в этом от пары дней.

Отредактировано

, когда я просто печатаю res , это дает мне огромные данные, которые начинаются как

Cursor {
pool: null,
server: null,
disconnectHandler:
Store {
 s: { storedOps: [], storeOptions: [Object], topology: [Object] },
 length: [Getter] },
bson: BSON {},
ns: 'modroid-server.text-responses',
cmd:
{ find: 'modroid-server.text-responses',
 limit: 0,
 skip: 0,
 query: { where: [Object] },
 slaveOk: true,
 readPreference: ReadPreference { mode: 'primary', tags: undefined } },

1 Ответ

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

Похоже, text-responses не является моделью.

Попробуйте с прямым агентом модели.

module.exports = function (Model) {
  Model.getDataSource().connector.connect(function (err, db) {
   Model.find({ "where": { "labels":  ["category", "price"]  } }, function (err, res) { // define whichever query you need
         console.log("collection find res:"+res);
            console.log("collection find err:"+err);
      })
     });
    }

ИлиПо коллекции

module.exports = function (Model) {
Model.getDataSource().connector.connect(function (err, db) {
        var collection = db.collection("collection-name"); //use agent
        collection.find({ "where": { "labels":  ["category", "price"]  } }, function (err, res) { // define whichever query you need
            console.log("collection find res:"+res);
            console.log("collection find err:"+err);
      })
    }
    );
}
...