在Mogoose我找到了我的文件,但没有使用更新

时间:2017-11-15 13:02:57

标签: node.js mongoose

我正在使用nodejs和mongo(使用mongooose)来构建一个简单的应用程序,但我有这个小问题。

如果我使用find方法搜索我的documento,我找到了该文档(是的,我可以在此更新),但如果我使用更新方法,则无法找到它。为什么呢?

我的控制器方法

var query = {
        _id: ObjectId(req.params.runner_id)
    };

    Runner.find(query, function(e,o) {
        console.log(o); //here i found
    })

    Runner.update(query, req.body, function (err, qtd) {
        console.log(qtd); //here note

        if (err) {
            ...
        } else {
            ...
        }
    })

我的架构

module.exports = mongoose.model("Runner", new Schema({
    cellphone: {
        type: String,
        require: "qual o telefone?",
        unique: true,
        validate: {
            validator: function (v) {
                var re = /^\d{11}$/;
                return (v == null || v.trim().length < 1) || re.test(v);
            },
            message: "telefone inválido"
        }
    },
    created_at: {
        type: Date,
        default: Date.now
    },
    advisors: [{
        name: {
            type: String,
            require: "entre com o nome"
        },
        email: {
            type: String,
            require: "entre com o e-mail"
        },
        advisor: {
            type: ObjectId,
            require: "qual a assessoria?"
        }
    }]
}));

我的输出

更新 - &gt; {ok:0,n:0,nModified:0} 与find - &gt; [{_id:5a0b99a9328fec0e4111ca52,     手机:'85999981114',     __v:0,     顾问:[[对象]],     created_at:Wed Nov 15 2017 01:34:33 GMT + 0000(UTC)}]

1 个答案:

答案 0 :(得分:0)

app.get('/', function(req, res){
   var query = {
        _id: ObjectId(req.params.id)
    };

    Runner.find(query, function(e,o) {
        console.log(o); //here i found
    })
}
app.put('/:id', function(req, res){
    var Id=req.params.id;
 Runner.findById(Id, function (err, qtd) {
        console.log(qtd); //here qtd will found

        if (err) {
            ...
        } else {
            ...
        }
}