Mongoose更新不起作用

时间:2017-11-30 09:43:37

标签: javascript node.js mongodb mongoose koa-router

我尝试将blockDate添加到用户数据库中,但下面的代码没有做任何更改。我查看了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)
    }
})

1 个答案:

答案 0 :(得分:0)

我不能告诉你它是否应该是一个没有看到你的猫鼬模型的日期。

如果它有类型Date,你的mongoose验证器可能会过滤它,这可能是没有更新发生的原因。您可以使用片刻将字符串转换为日期。例如(包括您可能喜欢或不喜欢的一些其他“改进”):

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