gpt4 book ai didi

javascript - Node.js:通过迭代的 JSON POST 数据创建多个 MongoDB 文档

转载 作者:太空宇宙 更新时间:2023-11-04 02:31:44 24 4
gpt4 key购买 nike

网页通过 POST 将 JSON 数据发送到我的 Node.js 应用程序(使用 Mongoose 的 MEAN 环境)。 JSON 文件如下所示(摘录):

   Firstname: 'XY',
Surname: 'asd',
Articles:
[ { title: '1', description: 'XY' },
{ title: '2', description: 'XY' },
{ title: '3', description: 'XY' }

目的是在 mongodb 数据库中创建一个作者,将作者添加到另一个目录,存储关联的文章并在作者文档中创建对这些文章的引用(不包括代码)。这是处理请求的代码:

[...]
async.waterfall([
//Create random code for author (besides mongodb-specific id)
function(callback){
newAuthorCode.randomAuthorCode(function(err, code) {
callback(null, code);
});
},

//Save new author to db
function(code, callback){
var newAuthor = new Author({firstname: req.body.Firstname,
surname: req.body.Surname,
identcode: code
});

newAuthor.save(function (err){
callback(null, newAuthor);
});
},

//Add new author to an additional directory
function(newAuthor, callback){
Directory.update({_id: req.user._id}, {$push: {authorids: newAuthor._id }}, function(err, update){
if (update){
callback(null);
}
});
},

//saves articles to db
function(callback){
var keys = Object.keys(req.body.articles);

for(var i=0, length=keys.length; i<length; i++){
var newArticle = new Article({title: req.body.Articles[keys[i]].title,
description: req.body.Articles[keys[i]].description

});

newArticle.save(function (err){
console.log(newArticle._id); // <--- !!!!!!!
});
}
callback(null);
}

], function (err, result) {
console.log('DONE!!!');
res.send('200');
});

我的问题:

1) 我尝试输出生成的文章的所有 ID 的标记代码行仅提供最后存储的文章 ID 的 i 倍(在本例中为文章 3)。

2) 问题 1 导致我无法在作者文档(存储在不同的集合中)中创建新创建的文章的引用,因为我无法访问除最后一篇之外的任何文章 ID!?

3) 有时作者以及文章会在数据库中创建多次(之间存在巨大的时间间隔)!?

感谢您的任何建议,因为我已经没有想法了。

伊戈尔

最佳答案

不确定您的代码中的 newLink 是什么,但您可以尝试以下操作:

newArticle.save(function (err, newDoc){
console.log(newDoc._id); // <--- !!!!!!!
});

关于javascript - Node.js:通过迭代的 JSON POST 数据创建多个 MongoDB 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26080088/

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