Nodejs实现图片上传,链接保存到Mongodb数据库

本文介绍如何使用Node.js的multer和mongoose库实现客户端批量上传图片至服务器,并将图片链接存储至数据库。通过diskStorage配置上传路径与文件名,利用PictureStore更新图片链接数组。

需求: 客户端批量上传图片到服务器,服务器返回图片链接

用到的主要工具及node库有 multer  mongoose

代码如下

var router = require('express').Router()
var projectInfo = require('../projectInfo.json')
var multer = require('multer')
let PictureStore = require(PROXY).pictureStore

var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, './public/upload')
  },
  filename: function (req, file, cb) {
    var str = file.originalname.split('.')
    cb(null, Date.now() + '.' + str[1])
  }
})
var upload = multer({storage: storage})

// 上传图片到图片仓库并返回上传的图片路径
router.post('/uploadImgs', upload.array('file', 20), function (req, res, next) {
  var arr = []
  for (var i in req.files) {
    arr.push(global.SERVICEADDRESS + '' + req.files[i].filename)
  }
  if (req.body.storeId) {
    PictureStore.updateOnePictureStore({_id: req.body.storeId}, {$addToSet: {pictureUrlArr: {$each: arr}}}, (err, data) => {
      res.json({
        code: 200,
        data: arr
      })
    })
  } else {
    PictureStore.updateOnePictureStore({isCommon: true}, {$addToSet: {pictureUrlArr: {$each: arr}}}, (err, data) => {
      res.json({
        code: 200,
        data: arr
      })
    })
  }
})

上传图片到服务器的public/upload文件夹下

更新图片链接到图片库, 主要是用了 

{$addToSet: {pictureUrlArr: {$each: arr}}}  批量插入一个数组

谢谢阅读.如果觉得对你有帮助请记得点赞或收藏.欢迎留言讨论.你的支持是我出产优秀博客的动力.

### 回答1: Node.js可以通过MongoDB的官方驱动程序来连接MongoDB数据库。以下是连接MongoDB数据库的步骤: 1. 安装MongoDB驱动程序 使用npm安装MongoDB驱动程序: ``` npm install mongodb --save ``` 2. 连接MongoDB数据库 使用MongoDB驱动程序的MongoClient对象来连接MongoDB数据库: ``` const MongoClient = require('mongodb').MongoClient; const url = 'mongodb://localhost:27017/mydb'; MongoClient.connect(url, function(err, db) { if (err) throw err; console.log("数据库已创建!"); db.close(); }); ``` 在上面的代码中,我们使用MongoClient对象的connect()方法来连接MongoDB数据库。connect()方法接受两个参数:MongoDB数据库的URL和一个回调函数。回调函数接受两个参数:错误对象和MongoDB数据库的实例。 3. 插入数据 使用MongoDB驱动程序的insertOne()方法来向MongoDB数据库中插入数据: ``` const MongoClient = require('mongodb').MongoClient; const url = 'mongodb://localhost:27017/mydb'; MongoClient.connect(url, function(err, db) { if (err) throw err; console.log("数据库已创建!"); const myobj = { name: "菜鸟教程", url: "www.runoob" }; db.collection("site").insertOne(myobj, function(err, res) { if (err) throw err; console.log("文档插入成功"); db.close(); }); }); ``` 在上面的代码中,我们使用MongoDB驱动程序的collection()方法来获取MongoDB数据库中的集合。然后,我们使用insertOne()方法向集合中插入数据。 以上就是连接MongoDB数据库的基本步骤。 ### 回答2: 在使用Node.js连接MongoDB数据库之前,我们需要先安装MongoDB数据库和Node.js环境。 接着,我们需要使用npm安装MongoDB官方的Node.js驱动程序——mongodb,这个驱动程序提供了对MongoDB的访问和操作。安装命令为: ``` npm install mongodb ``` 然后,在Node.js应用中引入mongodb模块: ```javascript var MongoClient = require('mongodb').MongoClient; ``` 接着,我们需要定义MongoDB的地址和数据库名称,并使用MongoDB的驱动程序进行连接: ```javascript var url = 'mongodb://localhost:27017/myproject'; MongoClient.connect(url, function(err, db) { console.log("Connected successfully to server"); // 进行操作 db.close(); }); ``` 在连接成功后,我们可以进行数据库的操作,例如插入、查询、更新和删除。以下是一些操作示例: 插入数据: ```javascript // 插入一条数据 db.collection('documents').insertOne({'name': 'John'}, function(err, r) { console.log('Inserted a document'); }); // 插入多条数据 db.collection('documents').insertMany([ {'name': 'John'}, {'name': 'Bob'} ], function(err, r) { console.log('Inserted documents'); }); ``` 查询数据: ```javascript // 查询所有数据 db.collection('documents').find({}).toArray(function(err, docs) { console.log('Found the following records'); console.log(docs); }); // 查询满足条件的数据 db.collection('documents').find({'name': 'John'}).toArray(function(err, docs) { console.log('Found the following records'); console.log(docs); }); ``` 更新数据: ```javascript // 更新一条数据 db.collection('documents').updateOne({'name': 'John'}, {$set: {'age': 20}}, function(err, r) { console.log('Updated a document'); }); // 更新多条数据 db.collection('documents').updateMany({'name': 'John'}, {$set: {'age': 20}}, function(err, r) { console.log('Updated documents'); }); ``` 删除数据: ```javascript // 删除一条数据 db.collection('documents').deleteOne({'name': 'John'}, function(err, r) { console.log('Deleted a document'); }); // 删除多条数据 db.collection('documents').deleteMany({'name': 'John'}, function(err, r) { console.log('Deleted documents'); }); ``` 最后,在对数据库的操作完成后,我们需要关闭数据库的连接: ```javascript db.close(); ``` 通过以上步骤,我们可以在Node.js中连接MongoDB数据库,并进行数据库的操作。 ### 回答3: Nodejs是一个非常流行的后端开发语言,它可以通过一些模块来连接MongoDB数据库。 首先,需要安装NodejsMongoDB,可以通过官网下载并安装。MongoDB在安装好之后,需要启动MongoDB服务。 接下来,需要安装mongodb模块。可以在终端输入以下命令: ``` npm install mongodb --save ``` 这样就成功安装了MongoDB模块。 接着,需要在Nodejs中导入mongodb模块,并编写连接代码。以下是一个基本的连接代码: ```javascript const MongoClient = require('mongodb').MongoClient; const url = 'mongodb://localhost:27017/test'; MongoClient.connect(url, function(err, db) { if (err) throw err; console.log("Database connected!"); db.close(); }); ``` 这个连接代码首先加载了`mongodb`模块,并设置了一个`url`常量,表示连接的数据库地址。然后使用`MongoClient`对象的`connect`方法连接数据库,如果成功连接则会输出“Database connected!”并关闭数据库连接。 在连接MongoDB数据库的时候,可以增加一些可选项。例如,可以指定需要认证的用户名和密码,或者更改默认的端口号等。 一旦连接成功,就可以对MongoDB数据库进行操作了。可以查看官方文档,了解更多的MongoDB操作方法。 需要注意的是,在使用完MongoDB之后,需要关闭数据库连接以节省系统资源。可以使用`db.close()`方法来关闭数据库连接。 总之,使用Nodejs连接MongoDB数据库非常方便。只需安装一些必要的模块,编写一些简单的代码,就可以连接并操作MongoDB数据库了。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拿我格子衫来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值