2017-11-30 7 views
0

Ich versuche, blockDate in Benutzer-DB hinzuzufügen, aber der Code unten nimmt keine Änderungen vor. Ich habe überprüft, dass data.username und blockDate gültigen Wert sind. Ich bekomme { ok: 0, n: 0, nModified: 0 } von res Variable. Wie kann ich herausfinden, was mit dieser Anfrage falsch ist?Mongoose-Update funktioniert nicht

+0

Haben Sie überprüft, ob die Abfrage des Updates mit irgendwelchen Dokumenten übereinstimmt? Wenn nicht, wird nichts aktualisiert. – Florian

+0

@Florian ja Es entspricht einem Dokument –

+0

Lässt 'test = erwarten User.find (param.search)' zurück Dokumente für Sie? Welcher Typ ist auch blockDate? Für Termine müssen Sie Datumsobjekte angeben. – kentor

Antwort

0

Ich kann Ihnen nicht sagen, ob es überhaupt ein Datum sein soll, ohne Ihr Mungo-Modell zu sehen.

Wenn es den Typ Datum hat, wird Ihr Mungo-Validierer es wahrscheinlich filtern, was der Grund sein könnte, dass keine Aktualisierung stattfindet. Sie könnten Moment verwenden, um die Zeichenfolge in ein Datum zu konvertieren. Zum Beispiel (einschließlich einiger anderer "Verbesserungen", die Sie mögen oder nicht mögen):

router.post('/account/block', async (ctx, next) => { 
    const data = ctx.request.body 
    const fixedDate = parseInt(data.days) 
    const blockDateString = DateTime.local().plus({days: fixedDate}).toISO() 
    const blockDate = moment(blockDateString) 
    const param = { 
     search: { username: data.username}, 
     update: { blockDate } 
    } 

    try { 
     console.log(param) 
     const res = await User.update(param.search, param.update, {multi: true}) 
     console.log("res", res) 
    } catch (e) { 
     console.log("err", e) 
    } 
})