关于mongoose
(NodeJS ORM)。我尝试使用pre
和post
个钩子。我有一个config
架构,在save
之后我要调用post
挂钩,在其上使用writeFile
。我的代码如下所示:
configSchema.post('save', function(result) {
const config = {};
Object.entries(this).forEach(([key, item]) => {
if(key.charAt(0) !== '_') config[key] = item;
console.log(`config[${key}] = ${config[key]}`);
});
const newConfig = JSON.stringify(config);
const JSON_FILE = path.join(__dirname, '../config.json');
return fs.writeFile(JSON_FILE, newConfig, 'utf8', (err) => {
if (err) console.log(err);
});
});
但是在这种情况下this
和result
没有返回最终文档,我甚至不知道在哪里找到他。如何在save
钩子中获得pre
的结果?
UPD。我在this.toJSON()
现在我的代码如下:
configSchema.post('save', function(result) {
const config = {};
const oldConfig = this.toJSON();
Object.entries(oldConfig).forEach(([key, item]) => {
console.log(`key.charAt(0) === ${key.charAt(0)}`);
if(key.charAt(0) !== '_') config[key] = item;
});
const newConfig = JSON.stringify(config);
const JSON_FILE = path.join(__dirname, '../config.json');
return fs.writeFile(JSON_FILE, newConfig, 'utf8', (err) => {
if (err) console.log(err);
});
});
答案 0 :(得分:0)
我们可以使用this
toJSON
的结果
this.toJSON()