diff --git a/backend/model/spider.go b/backend/model/spider.go index 78adc4d0..02c3aa8d 100644 --- a/backend/model/spider.go +++ b/backend/model/spider.go @@ -157,15 +157,15 @@ func GetSpiderByFileId(fileId bson.ObjectId) *Spider { } // 获取爬虫(根据名称) -func GetSpiderByName(name string) *Spider { +func GetSpiderByName(name string) Spider { s, c := database.GetCol("spiders") defer s.Close() - var result *Spider + var result Spider if err := c.Find(bson.M{"name": name}).One(&result); err != nil { log.Errorf("get spider error: %s, spider_name: %s", err.Error(), name) //debug.PrintStack() - return nil + return result } return result } diff --git a/backend/routes/config_spider.go b/backend/routes/config_spider.go index e387935a..ac6a11e0 100644 --- a/backend/routes/config_spider.go +++ b/backend/routes/config_spider.go @@ -40,7 +40,7 @@ func PutConfigSpider(c *gin.Context) { } // 判断爬虫是否存在 - if spider := model.GetSpiderByName(spider.Name); spider != nil { + if spider := model.GetSpiderByName(spider.Name); spider.Name != "" { HandleErrorF(http.StatusBadRequest, c, fmt.Sprintf("spider for '%s' already exists", spider.Name)) return } diff --git a/backend/routes/spider.go b/backend/routes/spider.go index d338ef0a..1ca45f05 100644 --- a/backend/routes/spider.go +++ b/backend/routes/spider.go @@ -132,7 +132,7 @@ func PutSpider(c *gin.Context) { } // 判断爬虫是否存在 - if spider := model.GetSpiderByName(spider.Name); spider != nil { + if spider := model.GetSpiderByName(spider.Name); spider.Name != "" { HandleErrorF(http.StatusBadRequest, c, fmt.Sprintf("spider for '%s' already exists", spider.Name)) return } @@ -238,7 +238,7 @@ func UploadSpider(c *gin.Context) { // 判断爬虫是否存在 spiderName := strings.Replace(targetFilename, ".zip", "", 1) spider := model.GetSpiderByName(spiderName) - if spider == nil { + if spider.Name == "" { // 保存爬虫信息 srcPath := viper.GetString("spider.path") spider := model.Spider{ @@ -255,6 +255,12 @@ func UploadSpider(c *gin.Context) { _ = spider.Save() } + // 发起同步 + services.PublishAllSpiders() + + // 获取爬虫 + spider = model.GetSpiderByName(spiderName) + c.JSON(http.StatusOK, Response{ Status: "ok", Message: "success", @@ -336,6 +342,9 @@ func UploadSpiderFromId(c *gin.Context) { spider.FileId = fid _ = spider.Save() + // 发起同步 + services.PublishSpider(spider) + c.JSON(http.StatusOK, Response{ Status: "ok", Message: "success",