NodeJS 快速应用程序.put /app.post输出空值

jei2mxaa  于 2023-03-12  发布在  Node.js
关注(0)|答案(2)|浏览(113)

我对node/express/mongoDB编码还是新手,在通过node/express向mongoDB添加/更新值时遇到了一个小问题。

app.post('/', (req, res, next) => {
    let data = {
        first_value: req.body.first_value,
        second_value: req.body.second_value,
    };
    dbase.collection("testDB").insertOne(data, (err, result) => {
        if (err) {
            console.log(err);
        }
        res.send('data added successfully');
    });
});

app.put('/:id', (req, res, next) => {
    var id = { _id: new ObjectID(req.params.id) };
    dbase.collection("testDB").updateOne({ _id: id }, {
        $set: {
            first_value: req.body.first_value
            second_value: req.body.second_value,
        }
    }, (err, result) => {
        if (err) {
            throw err;
        }
        res.send('data updated sucessfully');
    });
});

app.put不会改变DB中的值,app.post只会在我尝试使用Postman时在新条目的每一部分添加“null”,当我使用html表单添加新值时,数据添加正确。
我的代码有什么问题?

ef1yzkbh

ef1yzkbh1#

对于app.post,您能否提供您输入数据的方式以及格式(例如,application/raw、application/x-www-form-urlencoded等)的屏幕截图?
对于app.put,您需要更正以下内容。更正后的代码如下所示:

app.put('/:id', (req, res, next) => {
    var id = { _id: new ObjectID(req.params.id) };
    dbase.collection("testDB").updateOne( id , { // put "id" instead of "{ _id: id }"
        $set: {
            first_value: req.body.first_value
            second_value: req.body.second_value,
        }
    }, (err, result) => {
        if (err) {
            throw err;
        }
        res.send('data updated sucessfully');
    });
});

希望你能抓住重点,这对你很有效。

6yt4nkrj

6yt4nkrj2#

app.put('/:title', (req, res) => {
  const title = req.params.title;
  const index = data.findIndex(obj => obj.title === title);
  if (index !== -1) {
    data[index] = req.body;
    res.send(`Object with title ${title} updated`);
  } else {
    res.send(`Object with title ${title} not found`);
  }
});

相关问题