Как получить данные по динамику c имя коллекции в nodejs и мангуст - PullRequest
0 голосов
/ 09 мая 2020

Пытался получить данные из таблицы, динамически передавая имя коллекции, но не работал. У меня есть две таблицы [shoptable и markettable] и те же данные заголовка. Я хочу получить данные, зависящие от передаваемого имени коллекции. Я не знаю, как установить схема для коллекции Dynami c. Кто-нибудь может найти, где я сделал ошибку?

table.controller. js // Nodejs

const mongoose = require('mongoose'); 
const _ = require('lodash');
var Schema = mongoose.Schema;


let dynamicModels = {};
const ConvForUserSchema = new Schema({
    product_name: {
        type: String
    },
    price: {
        type: String
    },
    catogery: {
        type: String
    }
}, {
    versionKey: false,
    strict: false
});

const dynamicModel = (collectionName) => {
    if (!(collectionName in dynamicModels)) {
        dynamicModels[collectionName] = mongoose.model(collectionName, ConvForUserSchema, collectionName);
    }
    return dynamicModels[collectionName];
};


module.exports.getTableData = (req, res, next) => {

    let collection = req.query.collection;
    console.log("col=" + collection)

    dynamicModel(collection).find({}, function(err, docs) {
        if (err) {
            console.log('ss' + err);
            return
        }
        return res.json(docs);
    }) 

    }

user.service.ts:

getTableData(collection){ 
return this.http.get(`http://localhost:3000/api/getTableData?collection=${collection}`);
}

компонент продукта. js:

shopDatas(){ 
 this.getProductsData('shoptable'); 
}
marketDatas(){ 
 this.getProductsData('markettable'); 
}

getProductsData(collection){ 
 this.userService.getTableData(collection).subscribe(
  res => {
    this.tableData =  res; 
  },
  err => {
    console.log(err);

  }
);

}

компонент продукта. html:

<button (click)="shopDatas()">Shop data</button>
<button (click)="marketDatas()">Market data</button>
...