2016-03-18 11 views
1

Ich habe ein Projekt in SailsJs, benutze Waterline mit einer mongodb-Datenbank. Ich habe einige Felder definiert, die keine Pflichtfelder sind. Ich muss Datensätze suchen, wo dieses Feld nicht definiert ist. Zum Beispiel:Sailsjs finde, wo das Feld nicht gesetzt ist

{id: 10, name: "jj"} 
{id: 11, name: "kk", surname: "sr"} 

Ich möchte suchen, wo der Nachname nicht definiert ist. Hat jemand eine Ahnung wie man das macht?

Ich habe versucht,

{surname: null} 
{surname: ''} 

Nichts erzeugt das gewünschte Ergebnis.

+0

: scheint {Nachname undefined} um den Trick zu machen. Kann jemand bestätigen, dass das in Ordnung ist? – yBrodsky

+0

finden Sie (Nachname: '') wird Ihnen geben, in dem Nachname ist leer, während finden (Nachname: null) und finden (Nachname: undefined) gibt Ihnen, für welche Nachname ist null.Dies funktioniert für mich !! Wenn Sie immer noch dieses Problem haben. Dann fügen Sie Ihren Modell- und Controller-Code hinzu! – vkstack

+0

Nachname: undefiniert bringt mich Datensätze, wo das Feld "Nachname" nicht festgelegt ist. Null oder "" bringt Datensätze, in denen das Feld festgelegt, aber leer ist – yBrodsky

Antwort

1

Ich denke, was Sie wollen, ist vorhanden $: false. Es wird derzeit nicht von der Wasserlinie unterstützt. Sie können Model.native() verwenden, um es zu verwenden.

Waterline native()

Es gibt MongoDB Sammlung und Sie können dort einheimische MongoDB Operationen verwenden:

MongoDB $exists

komplette Code wie dieser

aussehen wird
Model.native(function(err, collection) {  
    if (err) throw err; 
    collection.find({ 
     surname: { $exists: false} 
    }).toArray(yourCallback); 
});