我正在尝试创建一种简单的方法,该方法在控制台中以美化格式注销数据库操作结果。我想在数据库完成操作后将一个额外的变量(operationName
传递给自定义记录器回调函数。
// Custom logger (simplified)
const dbLogger = (error, data, operationName) => {
if (error) {
console.log(`${operationName} failed`, error)
}
console.log(`${operationName} success`, data)
}
// mongodb operations
import ChatModel from 'somewhere';
function createMessage() {
const newChatAdded = new ChatModel({
message: 'Hi'
})
ChatModel.save(newChatAdded, dbLogger);
}
在此,我们的回调函数中的数据和错误由ChatModel.save
方法提供,但我想发送一个额外的字符串(例如“保存”)也是
答案 0 :(得分:2)
两种方法,请选择!
在调用dbLogger
时将匿名函数与rest parameter和spread一起使用:
ChatModel.save(newChatAdded, (...args) => dbLogger(...args, "save");
更改您的dbLogger
函数签名以接受operationName
作为第一个参数:
const dbLogger = (operationName, error, data) => {
if (error) {
console.log(`${operationName} failed`, error)
}
console.log(`${operationName} success`, data)
}
创建新的绑定日志函数,该函数始终以“ save”作为第一个参数来调用。
ChatModel.save(newChatAdded, dbLogger.bind(null, "save");
答案 1 :(得分:1)
ChatModel.save(newChatAdded, (error, data) => dbLogger(error, data, 'save'));
如果您要更改参数的顺序,则可以使其更加简洁:
const dbLogger = (operationName, error, data) => ...
ChatModel.save(newChatAdded, dbLogger.bind(null, 'save'));