Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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 Can';t通过REST客户端发送阵列中的多个对象(可选)_Javascript_Arrays_Node.js_Api_Rest - Fatal编程技术网

Javascript Can';t通过REST客户端发送阵列中的多个对象(可选)

Javascript Can';t通过REST客户端发送阵列中的多个对象(可选),javascript,arrays,node.js,api,rest,Javascript,Arrays,Node.js,Api,Rest,我正在使用失眠测试对API的请求。有人能解释为什么第一个图像中的请求有效,而第二个图像只在数组中发布第一个对象吗 作为参考,以下是我试图发布的对象数组: [{ "period":5, "uploadDate":"2015-11-19T21:00:00.000Z", "transferCode":"23100","vendor":"Unity State", "voucherNumber": "0000047538", "description":"10

我正在使用失眠测试对API的请求。有人能解释为什么第一个图像中的请求有效,而第二个图像只在数组中发布第一个对象吗

作为参考,以下是我试图发布的对象数组:

[{
    "period":5,
    "uploadDate":"2015-11-19T21:00:00.000Z",
    "transferCode":"23100","vendor":"Unity State",
    "voucherNumber": "0000047538",
    "description":"1003-1495 Condi Operating Oct                  ",
    "amount":7083

},
{
    "period":5,
    "uploadDate":"2015-11-19T21:00:00.000Z",
    "transferCode":"23100",
    "vendor":"Northern Bahr-el State",
    "voucherNumber":"0000047546",
    "description":"1003-1494 Condi Operating Oct                  ",
    "amount":7083

}]
以及我在Nodejs中使用的代码:

//transferController.js in Node
function createTransfer(request, response) {

    console.log('posting');
    console.log('body: ' + request.body);                         //TEST
    console.info("Body: " + JSON.stringify(request.body));        //TEST

    var transfer = new Transfer(request.body);

    transfer.save(function(error) {

       // console.log('transfer and transfer: ' + transfer);
       if(error) return response.json({ message: 'could not create transfer because ' + error });
       response.json({ transfer: transfer });
  });
}

因为您正在发布一个对象数组,所以在保存到数据库时应该遍历它们。试试这个(使用):

[编辑]

下面是一个使用此代码的示例应用程序

main.js

var express    = require("express");
var bodyParser = require("body-parser");
var mongoose   = require("mongoose");
var async      = require("async");
var Transfer   = require("./models/Transfer");

var app = express();
app.use(bodyParser.json());

mongoose.connect("mongodb://localhost/test");

//----------------------------------------------------
app.post('/', function (req, res) {

    async.mapSeries(req.body, function iterator(item, cb) {

        var transfer = new Transfer(item);
        transfer.save(function(error){
            cb(error, transfer);
        });
    }, 
    function done(error, transfers){
        res.json(error ? { message: "could not create transfer because " + error } : transfers);
  });
});


app.listen(3000);
var mongoose = require('mongoose');

var TransferSchema = new mongoose.Schema({
    uploadDate    : Date,
    period        : Number,
    transferCode  : String,
    voucherNumber : String,
    vendor        : String,
    description   : String,
    amount        : Number
});

module.exports = mongoose.model('Transfer', TransferSchema);
Transfer.js

var express    = require("express");
var bodyParser = require("body-parser");
var mongoose   = require("mongoose");
var async      = require("async");
var Transfer   = require("./models/Transfer");

var app = express();
app.use(bodyParser.json());

mongoose.connect("mongodb://localhost/test");

//----------------------------------------------------
app.post('/', function (req, res) {

    async.mapSeries(req.body, function iterator(item, cb) {

        var transfer = new Transfer(item);
        transfer.save(function(error){
            cb(error, transfer);
        });
    }, 
    function done(error, transfers){
        res.json(error ? { message: "could not create transfer because " + error } : transfers);
  });
});


app.listen(3000);
var mongoose = require('mongoose');

var TransferSchema = new mongoose.Schema({
    uploadDate    : Date,
    period        : Number,
    transferCode  : String,
    voucherNumber : String,
    vendor        : String,
    description   : String,
    amount        : Number
});

module.exports = mongoose.model('Transfer', TransferSchema);
输出(使用失眠)


尝试反转元素在数组中各自位置的顺序,查看结果状态是否完全相同。可能不是。我将其按相反顺序放置,它仍然会发布第一个对象,在本例中,仅发布带有
“vendor”:“Northern Bahr el-Ghazal”
IMO的对象-您需要在该数组的迭代器中查找服务器端错误。好的,我会研究它。谢谢我以前从未真正使用过async。我尝试了你写的代码,不幸的是它没有工作。在一个数组中发布任意数量的对象时,它只保存
\u v
\u id
键。该代码确实有效。刚刚发布了一个使用它的示例服务器,请再次测试。我很抱歉!它工作得很好。谢谢你的帮助!