如果开机自检时数组中只有一个对象,则为每个错误

Foreach error if only one object in array on post

本文关键字:错误 一个对象 开机自检 数组 如果      更新时间:2023-09-26

我在nodejs中有一个服务器,其中json具有以下模式:

    var UserSchema = new Schema({
        nick: String,
        deviceId: String,
        visivel: Boolean,
        checks: [{date: {type:String},log: {type:Number},lng: {type:Number}}]
});

在邮政编码中,我有一些东西,像这样:

.post(function(req, res){
            var user = new User();
            user.deviceId = req.body.deviceId;
            console.log("ID: " + req.body.deviceId);
            User.findOne({'deviceId': user.deviceId},'deviceId nick visivel checks',function(err, useritem){
                user.nick = req.body.nick;
                user.visivel = req.body.visivel;
                if(req.body.checks != undefined){
                    req.body.checks.forEach(function(items){
                    console.log(items);
                        user.checks.push(items);
                    });
                }
                user.save(function(err){
                    if (err)
                        res.send(err);
                    res.json({ message: 'user save!' });
                    console.log('user save 1!');
                })
            }
    }

当我在检查数组中只有一个对象发布帖子时,服务器有一个例外:

对象 # 没有方法 'forEach' 在承诺。(/RalyAPP/server.js:268:22) 在承诺。(/RalyAPP/node_modules/mongoose/node_modules/mpromise
/lib/promise.js:162:8) at Promise.emit (events.js:95:17) at Promise.emit (/RalyAPP/node_modules/mongoose/node_modules/mpromise/lib/pr
奥米斯.js:79:38) at Promise.fill (/RalyAPP/node_modules/mongoose/node_modules/mpromise/lib
/承诺.js:92:20) at/RalyAPP/node_modules/mongoose/lib/query.js:1833:13 在模型。Document.init (/RalyAPP/node_modules/mongoose/lib/document.js:251:1
1) at completeOne (/RalyAPP/node_modules/mongoose/lib/query.js:1831:10) at/RalyAPP/node_modules/mongoose/lib/query.js:1799:11 at/RalyAPP/node_modules/mongoose/lib/utils.js:414:16

但是,如果我发布一个包含更多帖子的帖子,请运行良好并且没有例外。

可以帮助解决此问题吗?

最好的。

也许是这样的东西?

if (req.body.checks !== undefined) {
    if (Array.isArray(req.body.checks)) {
        req.body.checks.forEach(function(items) {
            console.log(items);
            user.checks.push(items);
        });
    } else {
        console.log(req.body.checks);
        user.checks.push(req.body.checks);
    }
}

发送给您的请求包含字符串(或)json 格式的正文。您需要反序列化它并将其转换为数组对象。(或)您可以简单地使用表达#身体解析器。如果要发送类型为应用程序/JSON 的数据,请在 server.js 中添加此项,

var bodyParser = require('body-parser');
app.use( bodyParser.json() );  
相关文章: