2017-01-30 1 views
0

Ich habe ein Modell, 'Auszug', und will alle Auszüge holen, die nicht von einem bestimmten Benutzer gehören, und sind nicht in einer Liste der ausgeschlossenen Auszüge (zB keine Auszüge mit IDs aus der Liste [0, 1, 2, 3]).Wie verwende ich sowohl ein '<>' als auch ein 'whereNotIn' bei der Abfrage mit Knex und Bookshelf?

ich erfolgreich alle Auszüge ausgewählt habe nicht von einem Benutzer gehören, unter Verwendung von:

Excerpt 
    .query({ 
     whereNot: { owner_id : req.currentUser.id } 
    }) 
    .fetchAll() 
    .then((excerptResults) => { 
     res.status(200).json(excerptResults); 
    }); 

und ich habe versucht whereNotIn zu verwenden Auszüge auszuschließen mit dem folgenden Ausschnitt (gemäß this stackoverflow post):

Excerpt 
    .query({ 
     whereNotIn: { id : [0, 1, 2, 3] } 
    }) 
    .fetchAll() 
    .then((excerptResults) => { 
     var tasks = []; 
     for(var i=0; i<excerptResults.models.length; i++) { 
     tasks.push(excerptResults.models[i].attributes); 
     } 
     res.status(200).json(tasks); 
    }); 

Leider bekomme ich folgende Fehlermeldung

Unhandled rejection Error: Undefined binding(s) detected when compiling SELECT query: select "excerpts".* from "excerpts" where "[object Object]" not in (?)

Ich verstehe die Fehlermeldung nicht wirklich. Hat jemand irgendwelche Ideen?

+0

Try 'Excerpt.whereNotIn ('id' [0, 1, 2, 3])' –

+0

@MukeshSharma bekomme ich nur den Fehler 'Unhandle Ablehnung Typeerror: _excerpts2.default.whereNotIn ist keine Funktion' – tedigc

Antwort

1

Es sollte für Ihren Fall:

Excerpt.query(function(qb){ 
    qb.where('id','not in', [0,1,2,3]).andWhere('owner_id','=',req.currentUser.id) 
}) 
.fetchAll() 
.then(...); 
+0

Danke! Das hat für mich funktioniert. Wie würde ich es mit meiner ursprünglichen 'whereNot'-Abfrage verknüpfen, um Auszüge auszuschließen, die dem Benutzer gehören? Ich bin mit dieser Syntax nicht vertraut. – tedigc

+0

Überprüfen Sie meine aktualisierte Antwort. –

Verwandte Themen