Javascript 创建和更新Mongoose数组字段的正确格式是什么?
使用MEAN stack,我的node routes.js中有以下用于创建文档的代码:Javascript 创建和更新Mongoose数组字段的正确格式是什么?,javascript,arrays,node.js,mongodb,mongoose,Javascript,Arrays,Node.js,Mongodb,Mongoose,使用MEAN stack,我的node routes.js中有以下用于创建文档的代码: // create item app.post('/api/item', function(req, res) { // create an item, information comes from AJAX request from Angular Item.create({ text : req.body.text, keyword : [ req.bod
// create item
app.post('/api/item', function(req, res) {
// create an item, information comes from AJAX request from Angular
Item.create({
text : req.body.text,
keyword : [ req.body.keyword ],
saved : [ Date.now() ],
hidden : false
},
如果我在前端有一个按钮,可以动态添加表单字段来键入每个关键字,每个关键字表单字段都给定ng model=formData.keyword,[req.body.keyword]会将所有关键字记录在一个db数组中,然后我可以使用一个节点在前端循环关键字。get call和angular的ng repeat=keywords in keywords
如果是这样,则等效的[req.body.keyword]是否也适用于更新文档,其中所有创建字段首先填充不同的.get findOne调用,而不是下面更新调用中的findByID,其中前端的“update”按钮会触发此操作。get:
app.get('/api/items/update/:item_id', function(req, res) {
// use mongoose to get the item from the database
Item.findById({
_id : req.params.item_id
},
function(err, item) {
// if there is an error retrieving, send the error. nothing after res.send(err) will execute
if (err)
res.send(err)
item.text = req.body.text;
item.keyword = [ req.body.keyword ];
saved = [ Date.now() ];
hidden = false;
item.save(function (err, item) {
// if there is an error saving, send the error. nothing after res.send(err) will execute
if (err)
res.send(err)
res.json(item); // return the item in JSON format
});
});
});
我真的不知道你在问什么或者你想达到什么。也许您最好运行代码,如果代码没有达到预期效果,请查看文档或在此处提出问题。@NeilLunn只是想知道这是否是使用mongoose为字段创建和更新数组的正确方法。。还是需要推送?如何更新?是否要替换阵列?是否要添加新成员?是否要确保数组中的元素是唯一的?这些都不是你的问题。像我这样的陈述还没有运行这个程序,这对解释你是否真的尝试过任何东西都没有帮助。这就是为什么我说你不清楚你想做什么的原因。@NeilLunn为这个问题添加了更多的上下文。。我的主要问题是,在文档中创建数组字段并用多个表单字段行中的关键字填充它的正确方法是否是使用[req.body.keyword]?然后,如果语法正确,每个表单字段行都有关键字ng model=formData.keyword的角度连接,那么item.keyword=[req.body.keyword];是否使用所有剩余/更新/新建关键字表单字段替换数组字段?