如何从架构中获取模型名称?

时间:2019-08-24 08:45:17

标签: mongoose

如何以这种方式从架构中获取模型的名称? 我用猫鼬编写了一个全局插件,将模型转换为CVS。

现在我有此解决方案,但我不觉得这是个好方法。

let user = new User(newUser)
user.toCSV(user.collection.collectionName)

如果有那样的可能性

let user = new User(newUser)
user.toCSV()

插件的代码。


module.exports = function toCSV(schema, options) {

  schema.methods.toCSV = function toCSV(modelName) {
    var fields = Object.keys(schema.obj);
    let model = mongoose.model(modelName, schema);

    model.find({}, function (err, data) {
      if (err) {
        return {
          code: err.code,
          message: err.message,
          data: {}
        };
      } else {
        let csv
        try {
          var fields = Object.keys(schema.obj);
          csv = json2csv(data, {
            fields
          });
        } catch (err) {
          return {
            code: err.code,
            message: err.message,
            data: {}
          };

        }
        const dateTime = moment().format('YYYYMMDDhhmmss');
        const filePath = path.join(__dirname, "../..", "exports", "csv-" + dateTime + ".csv")
        fs.writeFile(filePath, csv, function (err) {
          if (err) {
            return {
              code: err.code,
              message: err.message,
              data: {}
            };

          } else {
            setTimeout(function () {
              fs.unlinkSync(filePath);
               // delete this file after 1 hour
              // Time in milliseconds to remove the CSV from server
              // so you will have the time to upload it to cloud
            }, process.env.TIMER_TO_REMOVE_CSV)
            "/exports/csv-" + dateTime + ".csv";
            return {
               code: 200,
              message: "complete",
              data: {
                filePath: "/exports/csv-" + dateTime + ".csv"
              }
            };
          }
        });

      }
    })
  };

}

1-如何从架构中获取名称,或者如何使用猫鼬? 2-如何在插件中更改此设置?

 let model = mongoose.model(modelName, schema);

    model.find({},(err,result)=>{});

或者是否有通过模式运行此model.find({})的方法,因为这可以解决这两个问题,所以我对mongo的了解不多,因为我是新手。

1 个答案:

答案 0 :(得分:0)

尝试传递modelName而不是传递this.collection.collectionName