我正在創建一個 crud 應用程式,并且正在使用記憶體資料庫測驗資料庫。唯一中斷的測驗和函式是 toggleTask 函式和測驗。
功能:
func (r *Repository) ToggleTask(task Task) (Task, error) {
query := "UPDATE Tasks SET completed = NOT completed WHERE id = (?)"
_, err := r.db.Exec(query, task.ID)
if err != nil {
return task, err
}
query = "SELECT id, txt, completed FROM Tasks WHERE id = (?) RETURNING *"
err = r.db.QueryRow(query, task.ID).Scan(&task.ID, &task.Text, &task.ListID, &task.Completed)
if err != nil {
return task, err
}
return task, nil
}
測驗:
const (
ToggleTask = "SELECT id, txt, completed FROM Tasks WHERE id = (?) RETURNING *"
)
func TestToggleTask(t *testing.T) {
repo := mockDbRepo()
list := List{Name: "Test List"}
repo.db.Exec(CreateList, list.Name)
task := Task{Text: "Test Task", ListID: list.ID}
repo.db.Exec(CreateTask, task.Text, task.ListID)
completedTask,err := repo.ToggleTask(task)
if err != nil {
t.Error(err)
}
if !reflect.DeepEqual(completedTask, task) {
t.Errorf("Expected %v, got %v", task, completedTask)
}
}
測驗回傳給我:
SQL 邏輯錯誤:“回傳”附近:語法錯誤 (1)
uj5u.com熱心網友回復:
您的 SQL 查詢不正確。如 SQL Lite 檔案中所述,SELECT不接受RETURNING子句。該SELECT子句本身回傳資料。洗掉RETURNING查詢中的子句,您應該會很好。
SQL Lite 參考:https ://www.sqlite.org/lang_select.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/475734.html
