以下代码可完美运行:
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”必须是一个对象,具有异步功能
那么我该如何自动执行异步功能?
预先感谢
答案 0 :(得分:10)
这就是为什么不确定100%ASI(自动分号插入)如何工作时应该使用分号的原因。 (即使您了解ASI,也可能不应该依赖它,因为它很容易弄乱)
在线
const Course = mongoose.model('Course',courseSchema)
(async ()=>{
// ...
})();
由于('Course',courseSchema)
之后没有分号,并且由于下一行以(
开头,因此解释程序将您的代码解释如下:
const Course = mongoose.model('Course',courseSchema)(async ()=>{
也就是说,您正在使用mongoose.model('Course',courseSchema)
函数调用 async
的结果(然后尝试调用结果)。
请改用分号,而不要依靠自动分号插入:
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);
})();