类型错误:无法在字符串上创建属性“_id”

新手上路,请多包涵

我正在创建简单的 rest API 我有一个用于 post/data 的端点,用于将数据从外部 API 保存到 MongoDB,

这是我到目前为止所拥有的:

 app.post('/data', (req, res) => {
    let url = 'https://api.themoviedb.org/3/movie/401478/reviews?api_key=4d9c9de3bdf0d3b6837c49c086e3b190';
    request(url, function (error, response, body) {
        db.collection('data').insert(body, (err, result) => {
            if (err) {
                res.send({
                    'error': 'An error has occured'
                });
            } else {
                    res.send(result.ops[0]);
            }
        });
    });
});

当我在邮递员中测试 api localhost:8000/data 在控制台中我得到错误:

类型错误:无法在字符串上创建属性“_id”

我在这里做错了什么?

原文由 Hot Zellah 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 478
2 个回答

body 是JSON字符串,要将其转换为JSON对象,使用 JSON.parse(body)

 app.post('/data', (req, res) => {
    let url = 'https://api.themoviedb.org/3/movie/401478/reviews?api_key=4d9c9de3bdf0d3b6837c49c086e3b190';
    request(url, function (error, response, body) {

        // convert to JSON
        var bodyJson = JSON.parse(body)

        db.collection('data').insert(bodyJson, (err, result) => {
            if (err) {
                res.send({
                    'error': 'An error has occured'
                });
            } else {
                    res.send(result.ops[0]);
            }
        });
    });
});

原文由 Adam Azad 发布,翻译遵循 CC BY-SA 4.0 许可协议

根据你之前的问题,我看到你的 body var 目前是一个字符串,所以你需要改变它。

 app.post('/data', (req, res) => {
let url = 'https://api.themoviedb.org/3/movie/401478/reviews?api_key=4d9c9de3bdf0d3b6837c49c086e3b190';
request(url, function (error, response, body) {
    var insertObj = JSON.parse(body)
    db.collection('data').insert(insertObj, (err, result) => {
        if (err) {
            res.send({
                'error': 'An error has occured'
            });
        } else {
                res.send(result.ops[0]);
        }
    });
});
});

原文由 feiiiiii 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题