Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-Express-MongoDb-Mongoose findOneAndUpdate返回未定义_Javascript_Mongodb_Express_Schema - Fatal编程技术网

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

JavaScript-Express-MongoDb-Mongoose findOneAndUpdate返回未定义,javascript,mongodb,express,schema,Javascript,Mongodb,Express,Schema,因此,我试图更新mongodb数据库中的一个项,但它不起作用,并且error关键字被设置为undefined。我可能做错了什么,但这里有一个更新功能: 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

因此,我试图更新mongodb数据库中的一个项,但它不起作用,并且error关键字被设置为undefined。我可能做错了什么,但这里有一个更新功能:

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并获得如下承诺,则会更好:

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

当我尝试这样做时,我得到一个错误,告诉我传入的参数必须是12字节的单个字符串或24个十六进制字符的字符串。我应该使用不同的功能吗?我更新了我的响应,因为强制转换不是真的必要,而且你使用的id可能无效,你能给我们你试图访问的url吗?好的,我不完全确定为什么,但这似乎行得通。谢谢!