gpt4 book ai didi

javascript - 使用 Node 将对象数组发布到 MongoDB 会发送空数组

转载 作者:行者123 更新时间:2023-11-30 12:07:24 25 4
gpt4 key购买 nike

我正在尝试使用 NodeJS 将一组对象发布到我的 MongoDB 数据库。当我发帖时,我所有的字段都显示为空。我把我的代码放在下面,下面解释了每个 console.log 的输出。有什么想法可以解决这个问题吗?

型号

var mongoose = require('mongoose');

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

//convert schema to model
var Transfer = mongoose.model('Transfer', TransferSchema);

//export model for use elsewhere in app
module.exports = Transfer;

Ajax - 在这里,我尝试同时发布 newArrayjson。两者都会导致发布到我的数据库的相同数据,但对 Controller 文件中的 console.log 有不同的影响。

console.log(newArray);
json = JSON.stringify(newArray);
console.log(json);

$.ajax({
url: "http://localhost:3000/transfers/api",
type: "POST",
data: newArray,
datatype: 'json',
success: function(data, textStatus, jqXHR) {
console.log('posted!');
},
error: function(data, textStatus, errorThrown) {
console.log('failed');
}
})

transferController.js- 发布 newArray 时,我得到以下信息:正文:[对象对象]正文:{“未定义”:[“”,“”,“”,等]文本:未定义完成:未定义

-发布 json 时,我得到以下信息:正文:[对象对象]正文:{"{\"period\":5,\"uploadDate\":2015-11-19T21:00:00.000Z\",\"transferCode\":\"1041\",\"vendor\":\"Lakes State\",\"voucherNumber\":\"0000047571\",\"description\":\"1003-1555 Sal Tax Adj Gran Sep\",\"amount\":456802}。 ..,文本:未定义完成:未定义

//Create a new transfer
function createTransfer(request, response) {
console.log('posting');
console.log('body: ' + request.body); //TEST
console.info("Body: " + JSON.stringify(request.body)); //TEST
console.info("Text: " + JSON.stringify(request.body.text)); //TEST
console.info("Done: " + JSON.stringify(request.body.done)); //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 });
});
}

编辑:

我尝试使用 Insomnia 来测试我发送的内容。奇怪的是,下面的截图发布在 Insomnia 上,但没有发布在我的应用程序中: enter image description here

同样有趣的是,如果我使用 Insomnia 在数组中发布多个对象,它不起作用,如下所示: enter image description here

最佳答案

尝试在您的 ajax 请求中设置 contentType: 'application/json' 并像这样stringify您的数据 JSON.stringify(newArray)。这应该确保您发送的数据是正确的。

看起来您正在发送许多传输,但随后尝试从所有数据创建一个传输(request.body)?您需要遍历它们并单独创建它们。像这样:

request.body.forEach(function(obj) {
var transfer = new Transfer(obj);
transfer.save();
});

关于javascript - 使用 Node 将对象数组发布到 MongoDB 会发送空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34787532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com