自动执行异步函数
·
问题:自动执行异步函数
以下代码完美运行:
const Course = mongoose.model('Course',courseSchema)
async function foo(){
const nodeCourse = new Course({
name: "Node JS Course",
author: "foo",
tags: ['node','backend']
})
const result = await nodeCourse.save()
console.log(result)
}
foo()
但是这个给出了一个错误:
const Course = mongoose.model('Course',courseSchema)
(async ()=>{
const nodeCourse = new Course({
name: "Node JS Course",
author: "foo",
tags: ['node','backend']
})
const result = await nodeCourse.save()
console.log(result)
})()
错误:
ObjectParameterError: Document() 的参数“obj”必须是一个对象,得到了异步函数
那么如何自动执行异步函数呢?
提前致谢
解答
这就是为什么当您不能 100% 确定 ASI(自动分号插入)的工作原理时应该使用分号的原因。 (即使你了解 ASI,你也可能不应该依赖它,因为它很容易搞砸)
上线
const Course = mongoose.model('Course',courseSchema)
(async ()=>{
// ...
})();
因为在('Course',courseSchema)之后没有分号,并且因为下一行以(开头,所以解释器将您的代码解释如下:
const Course = mongoose.model('Course',courseSchema)(async ()=>{
也就是说,您正在使用async函数_invoking_mongoose.model('Course',courseSchema)的结果(然后尝试调用结果)。
改用分号,而不是依赖自动分号插入:
const Course = mongoose.model('Course',courseSchema);
(async ()=>{
const nodeCourse = new Course({
name: "Node JS Course",
author: "foo",
tags: ['node','backend']
});
const result = await nodeCourse.save();
console.log(result);
})();
更多推荐
所有评论(0)