JavaScript - Express - MongoDb - Mongoose findOneAndUpdate 返回未定义

标签 javascript mongodb express schema

所以我试图更新 mongodb 数据库中的一个项目,但它不起作用,并且错误关键字被设置为未定义。我可能做错了一些事情,但这是更新函数:

router.post("/file/:id/edit", (req, res) => {
  var id = req.params.id;
  File.findOneAndUpdate( {"_id": id} , req.body, (err) => {
  if (err) return res.json({ success: false, error: err });
    return res.json({ success: true });
  });
});

调用它的函数:

export function updateFile(file) {
  var objIdToUpdate = file["id"];
  var myUpdate = axios.post("http://localhost:3001/api/file/:" + objIdToUpdate + "/edit", {
        title: file.title,
        author: file.author,
        dateCreated: file.dateC,
        dateModified: file.dateModified,
        size: file.size,
        type: file.type,
        tags: file.tags
  });
  return myUpdate;
}

我的架构:

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const FileSchema = new Schema(
  {
    title: String,
    author: String,
    dateCreated: String,
    dateModified: String,
    size: String,
    type: String,
    tags: []
  },
  { timestamps: true }
);

module.exports = mongoose.model("File", FileSchema, "files");

当我尝试打印“err”关键字时,它只是未定义。为什么这无法修改我数据库中的值,出了什么问题?

最佳答案

在 findOneAndUpdate 的回调函数中,err 总是有一个值,如果您使用 then 和 catch 并带有如下的 Promise 会更好:

File.findOneAndUpdate({ "_id":  req.params.id}, { req.body },{returnNewDocument: true})
    .then((resp) => { res.send(resp) })
    .catch((err) => { res.send(err) });

关于JavaScript - Express - MongoDb - Mongoose findOneAndUpdate 返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54756592/

相关文章:

javascript - jQuery 拖放范围问题

java - MongoDB java 驱动程序 3.0 在身份验证时无法捕获异常

mongodb - mongodb的云就绪是什么意思

javascript - Webpack 开发中间件未正确提供 bundle.js

javascript - 根据表中单击/滚动的行填充输入框

javascript - 通过模型初始化日期时间选择器上的日期

javascript - 在 Meteor Mongo 上添加、减去和比较日期和时间

javascript - 在 Express 路由器中使用 GET 请求的结果

javascript - 如何将 mvc 方法应用于 Nodejs - Express 应用程序中的 app.js 文件

javascript - 为什么进度条不能正常工作?