Я занимаюсь разработкой проекта с использованием Loopback Framework и Mongodb. И я столкнулся с проблемой поиска документа в Коллекции Mongodb на уровне приложения. Это не работает с состоянием фильтра. Я всегда получаю весь документ в Коллекции.
Вот схема моей модели
{
"name": "MyModel",
"plural": "mymodel",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"title": {
"type": "string",
"required": true
},
"description": {
"type": "string",
"required": true
},
"guide_to_make": {
"type": "string",
"required": true
},
"media": {
"type": "object",
"required": true
},
"price": {
"type": "number",
"required": true,
"default": 0
},
"discount": {
"type": "number",
"default": 0
},
"status": {
"type": "number",
"required": true,
"default": 1
},
"user_provider": {
"type": "string",
"required": true
},
"create_at": {
"type": "date",
"required": true,
"defaultFn": "now"
},
"last_update": {
"type": "date",
"required": true,
"defaultFn": "now"
}
},
"validations": [],
"relations": {},
"acls": [
{
"accessType": "WRITE",
"principalType": "ROLE",
"principalId": "$unauthenticated",
"permission": "DENY"
}
],
"methods": {}
}
А вот какой-то способ, который я использовал для запроса фильтра, чтобы найти элементы, которые соответствуют условиям фильтра:
MyModel.find({user_provide:'5ae9e8400e59ae0ecc5ed614'},(err,items)=>{console.log(JSON.stringify(items))});
MyModel.find({user_provide:{'like':'5ae9e8400e59ae0ecc5ed614'}},(err,items)=>{console.log(JSON.stringify(items))});
Или я попытался напрямую использовать монго соединение, как показано ниже:
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function (err, db) {
if (err) throw err;
var dbo = db.db("asiodb");
dbo.collection("Mymodel").find({}, { user_provider: '5ae9e8400e59ae0ecc5ed614' }).toArray(function (err, result) {
if (err) throw err;
console.log(result);
db.close();
});
});
Но со всеми способами, которые я использовал, я всегда получал все документы в Коллекции. И я протестировал условия фильтра в Robo3T с помощью команды запроса mongo
db.getCollection('Mymodel').find({user_provider:'5ae9e8400e59ae0ecc5ed614'})
И это работает также с командой mongo в Robo3T. Он может найти предметы, которые соответствуют условиям
Я не знаю, почему это не работает на моем уровне сервера с кодом JS.
Кто-то, пожалуйста, покажите мне, что не так в коде JS или в правильном синтаксисе для использования метода поиска Монго.
Большое спасибо!