arrays - 通过 Postman 发送 JSON 会导致我的 Node.js 服务出现错误

标签 arrays node.js schema postman

我在 node.js 中创建了架构。在我包含数组之前它就起作用了。

这是我的架构代码:

const Item = new item_Schema({
    info:{
        title:{type:String, required:true},
        bad_point:{type:Number, 'default':0},
        Tag:{type:String, required:true}
    },
    review:{
        Review_text:{type:Array, required:true},
        Phone_list:{type:Array, required:true},
        LatLng_list:{type:Array, required:true}
    }
});

Item.statics.create = function(info, review){
    const list = new this({
        info:{
            title,
            bad_point,
            Tag
        },
        review:{
            Review_text,
            Phone_list,
            LatLng_list
        }
    });

    return list.save();
};

这是我的注册代码:

exports.register = (req, res) => {
    const { info, review } = req.body

    const create = (list) => {
        return Item.create(info, review)
    }

    const respond = () => {
        res.json({
            message: 'place route registered successfully'
        })
    }

    const onError = (error) => {
        res.status(409).json({
            message: error.message
        })
    }


    RouteReviewItem.findOneBytitle(title)
    .then(create)
    .then(respond)
    .catch(onError)
}

这是 Postman JSON 原始代码:

{
    "info":"{
        "title":"test title",
        "badPoint":"0"
        "Tag":"tag1"
        }",
    "review":"{
        "Review_text":["1번리뷰", "2번리뷰", "3번리뷰"],
        "Phone_list":"["010-0000-0000", "010-1111-1111", "010-2222-2222"],
        "LatLng_list":["111.1111,111.1111", "222.222,222.222","333.3333,333.3333"]
        }"
}

这是我在 Postman 中遇到的错误:

SyntaxError: Unexpected token in JSON at position 17
    at JSON.parse (<anonymous>)
    at parse (C:\MainServer\node_modules\body-parser\lib\types\json.js:89:19)
    at C:\MainServer\node_modules\body-parser\lib\read.js:121:18
    at invokeCallback (C:\MainServer\node_modules\raw-body\index.js:224:16)
    at done (C:\MainServer\node_modules\raw-body\index.js:213:7)
    at IncomingMessage.onEnd (C:\MainServer\node_modules\raw-body\index.js:273:7)
    at emitNone (events.js:105:13)
    at IncomingMessage.emit (events.js:207:7)
    at endReadableNT (_stream_readable.js:1045:12)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)

这是 postman 的问题吗?或者node.js 方面? 我查看了我正在学习的node.js书籍,但没有找到任何相关信息。

最佳答案

代码没问题,但用于测试的 JSON 存在问题。为了进一步测试和调试,我建议您使用 JSONLint 之类的服务来验证向端点发送的请求是否正确。 (或任何具有相同功能的离线工具)。对于您在问题中发布的请求,此服务提示:

Error: Parse error on line 2:
{   "info": "{  "title": "test t
----------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got 'undefined'

下次,在发送请求之前,请确保其语法正确。这样您就会知道您的代码存在问题,并且不会花时间调试不存在的问题。

关于arrays - 通过 Postman 发送 JSON 会导致我的 Node.js 服务出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50423949/

相关文章:

mysql - 我只是找不到这个 MySQL "Exists()"错误的合适解决方案

javascript - 异步:return from functions in waterfall method

XML 不符合架构

c++ - 数组下标的无效类型 'double [100][double]'

javascript - 将多维数组转换为单个数组(Javascript)

c - 如何使用 scanf() 只捕获字符串

java - 制作点的二维数组列表

node.js - 使用 Sequelize 和 Sqlite3 设置多对多关联

database-design - 为点赞/点赞建模——每种类型一张 table ,还是一张大 table ?

oracle - Symfony2 Doctrine :schema:drop --force doesn't work