我已经浏览了一些文档和Google,并尝试了几种代码解决方案,但由于无法对其进行排序,所以就可以了。
我一直在使用猫鼬实例方法来包装默认的猫鼬.save
功能(提供默认值,搜索索引等)。我是async/await
语法的忠实拥护者,因此没有使用过猫鼬提供的回调,而是返回了一个Promise。像这样:
schema.methods.customSave = async function(options, cb) {
console.log(typeof options) // will talk about later, in problem statement
// do stuff
let results = await customLogic()
return results
}
现在的问题是...调用此函数的方式是:
let options = { // properties here }
instance.customSave(options)
然后,您的选项实际上不会被传递。第一个代码块中的日志将返回function
。为了通过并接收您的选项,您必须执行以下操作:
instance.customSave(options, false)
我还尝试在原始实例方法声明中将cb
的值默认为默认值,我认为这样做是可行的,因为这就像将回调传递给该方法的每次调用一样,但这也没有用。如下所示:
schema.methods.customSave = async function(options, cb = () => { return }) {
...
}
我宁愿完全不用担心回调就可以调用该方法(因为我不使用它)。所以我想让它工作:
let options = { // properties here }
instance.customSave(options)
,第一个代码块中的日志将返回object
。有人知道怎么用猫鼬吗?