Вот почему вы должны использовать точки с запятой, когда вы не уверены на 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);
})();