簡體   English   中英

貓鼬findByIdAndUpdate成功更新文檔,但失敗

[英]Mongoose findByIdAndUpdate successfully updates document but ruturns error

findByIdAndUpdate()成功更新文檔,但返回我不理解的錯誤。

這是模式:

const userSchema = mongoose.Schema({
    phone: String,
    password: String,
    token: String
});
const User = mongoose.model('User', userSchema);

這是更新數據庫中用戶的功能

export const login = (req, res) => {
    User.findOne({ phone: req.body.phone }, (err, result) => {
        if (err) res.status(500).send(`User with ${req.body.phone} doesn't exist. \n Error: ${err}`);
        if( result.password === req.body.password ){
            // here Console.log(result) returns:
            //{ 
            //  _id: 5aa28eb4f4a8de28c24e6990,
            //  phone: '+79781231233434',
            //  password: 'passsss',
            //  token: '1520613346284',
            //  __v: 0 
            //}

            User.findByIdAndUpdate( result.id, { "token": Date.now() },
                (err, result) => {
                    // It gives error, of which stacktrace i give below. But if check database - 
                    // everything is fine, token was updated successfully
                    if (err) return res.status(500).send('Unable to create token. Error: ', err);
                    return res.status(200).send(result._id, result.token);
            })
        } else return res.status(500).send('Incorrect password');
    })
}

這是我在發布帶有數據的請求時獲得的控制台信息,該數據應成功通過此檢查並獲得令牌。

express deprecated res.send(status, body): Use res.status(status).send(body) instead controllers/user.js:17:28
express deprecated res.send(status, body): Use res.status(status).send(body) instead controllers/user.js:16:37
/Users/dmitryklymenko/Documents/projects/project_exchange/server/node_modules/mongoose/lib/utils.js:423
        throw err;
        ^

RangeError: Invalid status code: Unable to create token. Error: 
    at ServerResponse.writeHead (_http_server.js:190:11)
    at ServerResponse._implicitHeader (_http_server.js:181:8)
    at write_ (_http_outgoing.js:635:9)
    at ServerResponse.end (_http_outgoing.js:754:5)
    at ServerResponse.send (/Users/dmitryklymenko/Documents/projects/project_exchange/server/node_modules/express/lib/response.js:221:10)
    at ServerResponse.json (/Users/dmitryklymenko/Documents/projects/project_exchange/server/node_modules/express/lib/response.js:267:15)
    at ServerResponse.send (/Users/dmitryklymenko/Documents/projects/project_exchange/server/node_modules/express/lib/response.js:158:21)
    at /Users/dmitryklymenko/Documents/projects/project_exchange/server/controllers/user.js:10:38
    at /Users/dmitryklymenko/Documents/projects/project_exchange/server/node_modules/mongoose/lib/model.js:3930:16
    at _init (/Users/dmitryklymenko/Documents/projects/project_exchange/server/node_modules/mongoose/lib/query.js:2000:14)
    at completeOne (/Users/dmitryklymenko/Documents/projects/project_exchange/server/node_modules/mongoose/lib/query.js:1995:5)
    at cb (/Users/dmitryklymenko/Documents/projects/project_exchange/server/node_modules/mongoose/lib/query.js:2365:14)
    at /Users/dmitryklymenko/Documents/projects/project_exchange/server/node_modules/mongoose/lib/query.js:2465:14
    at /Users/dmitryklymenko/Documents/projects/project_exchange/server/node_modules/mongoose/lib/utils.js:418:16
    at result (/Users/dmitryklymenko/Documents/projects/project_exchange/server/node_modules/mongodb/lib/utils.js:413:17)
    at session.endSession (/Users/dmitryklymenko/Documents/projects/project_exchange/server/node_modules/mongodb/lib/utils.js:400:11)
    at ClientSession.endSession (/Users/dmitryklymenko/Documents/projects/project_exchange/server/node_modules/mongodb-core/lib/sessions.js:69:41)
    at executeCallback (/Users/dmitryklymenko/Documents/projects/project_exchange/server/node_modules/mongodb/lib/utils.js:396:17)
    at handleCallback (/Users/dmitryklymenko/Documents/projects/project_exchange/server/node_modules/mongodb/lib/utils.js:128:55)
    at /Users/dmitryklymenko/Documents/projects/project_exchange/server/node_modules/mongodb/lib/collection.js:2302:12
    at result (/Users/dmitryklymenko/Documents/projects/project_exchange/server/node_modules/mongodb/lib/utils.js:413:17)
    at executeCallback (/Users/dmitryklymenko/Documents/projects/project_exchange/server/node_modules/mongodb/lib/utils.js:405:9)
[nodemon] app crashed - waiting for file changes before starting...

我不明白這個錯誤。 為什么會出現? 如果更新完成,為什么會出現錯誤? 為什么我在各處都使用res.status(status).send(body)看到棄用警告? 也許是Babel給我帶來了麻煩? 有人知道我需要檢查以確定發生了什么嗎?

body參數可以是Buffer對象,String,對象或Array。

為了使其正常工作,請使用字符串插值:

User.findByIdAndUpdate( result.id, { "token": Date.now() },
  (err, result) => {
    // It gives error, of which stacktrace i give below. But if check database - 
    // everything is fine, token was updated successfully
    if (err) return res.status(500).send(`Unable to create token. Error: ${err}`);
      return res.status(200).send(`${result._id}, ${result.token}`);
})

來源: node-express錯誤:表達已棄用的res.send(status):使用res.sendStatus(status)代替

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM