2017-11-30 12 views
0

blockDate을 사용자 db에 추가하려고하지만 아래 코드는 변경되지 않습니다. data.usernameblockDate이 유효한 값인지 확인했습니다. 나는 { ok: 0, n: 0, nModified: 0 }res 변수에서 얻습니다. 이 요청에 어떤 문제가 있는지 어떻게 알 수 있습니까?몽구스 업데이트가 작동하지 않습니다.

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

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

업데이트의 쿼리가 모든 문서와 일치하는지 확인 했습니까? 그렇지 않으면 아무것도 업데이트하지 않습니다. – Florian

+0

@Florian 예 문서와 일치합니까? –

+0

'let test = User.find (param.search)'대기 중 문서를 반환합니까? 또한 blockDate는 어떤 유형입니까? Afica for Date에서는 Date 객체를 제공해야합니다. – kentor

답변

0

당신의 몽구스 모델을 보지 않고는 전혀 날짜가 아니 었는지 알 수 없습니다.

날짜가 유형 인 경우 귀하의 몽구스 검사기가 필터를 걸러서 아마 업데이트가 진행되지 않을 수 있습니다. 문자열을 날짜로 변환하기 위해 순간을 사용할 수 있습니다. 예를 들어 (좋아할만한 다른 "개선"을 포함하여) :

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) 
    } 
})