首页 > 解决方案 > 如何在NodeJS / Mongoose中将数组中的多个项目保存到数据库

问题描述

所以首先我通过一个返回给我多行文本的表单获得一个帖子

然后我使用以下内容将其拆分为多个网址

var str = req.body.url;
var split = str.split('\n');

然后我明白了

[urlone,urltwo,urlthree]

我的保存功能适用于一个文档,我似乎无法通过 mongoose 命令同时将所有三个文档提交给 mongo。

我尝试了几个 forEach 循环。并没有得到任何帮助

我真的可以在这里使用一些帮助我对nodejs真的很陌生

标签: node.jsmongodbmongoose

解决方案


定义模型:

let mongoose = require('mongoose');
let Schema   = mongoose.Schema;

let ModelSchema = new Schema(
  {
    property: String,

    urls: []
  },
  {    
    collection: 'models',
    strict: true,
    autoIndex: true
  }
);

module.exports = Model = mongoose.model('Model', ModelSchema);

现在,您可以创建或更新任何记录。

let urlArray = req.body.url.split('\n');

// 解决方案 1

let myModel = new Model();
myModel.property = 'xxx';
myModel.urls = urlArray;
myModel.save();

// 解决方案 2

Model.update({ property: 'xxxx' }, { $set: { urls: urlArray } }, { upsert: true }, function(err, res) {
  // continue to check err/res
})

// 解决方案3,防止重复条目

Model.update({ property: 'xxxx' }, { $addToSet: { urls: urlArray } }, { upsert: true }, function(err, res) {
  // continue to check err/res
})

推荐阅读