KeysOnly函数不返回键

I experiment a little bit with GAE, but now I have a problem. First of all I store some stuff into the datastore, with an NewIncompleteKey. So there is the issue. My Website sends timestamps (I handle them as "ID"s) to the back-end. I parse then and want to delete them from the datastore. I thought I can do this.

type Food struct{
    Id int64
    Course string
    Name string 
    Date string
    Price float64
}

...Some Code...

func deleteEntries(mealsID []string, r *http.Request) int{
    // Get context from 
    c := appengine.NewContext(r);


    for _,id := range mealsID{
        var key *datastore.Key = nil
        q := datastore.NewQuery("Meal").Ancestor(mealStoreKey(c)).Filter("Course =", "dessert").KeysOnly()
        _, err := q.GetAll(c, key)
        if err != nil{
            return 0
        }
        log.Printf("Here the keys: %T %v ", key, key)
        log.Printf("%v ", id)
        e := datastore.Delete(c, key)
        if e != nil{
            return 33       
        }       
    }

    return len(mealsID)
}

But it doesn't work, because I get an error at the datastore.Delete() function. Anyone an idea?

Edit:

Part I:

   keys, err := q.GetAll(c, nil)
   …
   err = datastore.DeleteMulti(c, keys)

Thanks to Dave.

Part II:

I passed an String as Filter vaule to the query, but it have to be an Int64 same as in the datastore. Note to my self: You have to pass also the same type of var to the query.

func deleteEntries(mealsID []string, r *http.Request) int{
 // Get context from 
 c := appengine.NewContext(r);


 for _,id := range mealsID{
     ID,_ := strconv.Atoi(id)
     q:= datastore.NewQuery("Meal").Ancestor(mealStoreKey(c)).Filter("Id =", ID ).KeysOnly()
     keys, err := q.GetAll(c, nil)
     if err != nil{
         return 0
     }
     log.Printf("ID: %v ", id)
     log.Printf("Keys: %v ", keys)
     e := datastore.DeleteMulti(c, keys)
     if e != nil{
         log.Printf("%v ", e)
             return 0       
     }      
 }

 return len(mealsID)
}

The keys are returned from GetAll. So you should instead write:

keys, err := q.GetAll(c, nil)
…
err = datastore.DeleteMulti(c, keys)

GetAll ignores the dst parameter for keys-only requests – datastore reference. So, in the example above, key will still be set to nil which explains the error.