如何以这种方式从架构中获取模型的名称? 我用猫鼬编写了一个全局插件,将模型转换为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的了解不多,因为我是新手。
答案 0 :(得分:0)
尝试传递modelName
而不是传递this.collection.collectionName