javascript - 使用nodejs在mongodb中添加另一个图像路径

标签 javascript html node.js mongodb image

我可以在 mongodb 中存储图像路径。这里我以数组格式存储图像路径。使用文档 ID 我需要添加另一个图像,即我想将另一个图像路径插入该数组。所以我的问题是如何在 mongodb 中存储另一个图像路径。

我在这里使用 html 文件上传图片。这是我的代码 index.html

<form id="uploadForm"
      enctype="multipart/form-data"
      action="/api/file"
      method="post"
>
 <input type="file" name="userFile"/>
<input type="submit" value="Upload File" name="submit">

</form>

这是我的服务器代码 server.js

var express=require('express');
var multer=require('multer');
var bodyParser = require('body-parser');
var Image=require('./models/image');
var Product=require('./models/product');
var mongoose=require('mongoose');
var path = require('path');
var rand;
var urlencodedParser = bodyParser.urlencoded({ extended: false });

var config = require('./config');

mongoose.connect(config.mongoUrl);
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function () {
    console.log("Connected correctly to server");
});
var app=express();
var ejs = require('ejs')
app.set('view engine', 'ejs')
var storage = multer.diskStorage({
    destination: function(req, file, callback) {
        callback(null, './public/uploads')
    },
    filename: function(req, file, callback) {
        //callback(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname))
                //callback(null, file.originalname)
        rand=Date.now() + path.extname(file.originalname);

        callback(null, file.fieldname + '-' + rand);

    }

})
var upload = multer({
        storage: storage});
app.get('/api/file',function(req,res){
res.sendFile('E:/saas/nodejs/uploads/db/views/index.html');
});

app.post('/api/file',upload.single('userFile'), function(req, res) {
    console.log(req.file);
    console.log(req.file.path);

    Image.create({imagePaths:[{imagepath:req.file.path}]},function(err,img){

            if (err) throw err;
     console.log(img);
        console.log('Path created!');
        var id = img._id;

        res.writeHead(200, {
            'Content-Type': 'text/plain'
        });
        res.end('Added the image path with id: ' + id);
    });    
})

var route=require('./routes/route');
app.use('/route',route);
    app.listen(3000,function(){
    console.log("Server listening on 3000");
});

运行服务器后,我将在浏览器中使用它 http://localhost:3000/api/file 使用它我可以上传文件,我将获得 mongodb 文档 ID 作为响应。使用这个 Id 如何上传另一个图片路径。

最佳答案

使用$push将路径存入数组

schemaName.findByIdAndUpdate(
   { req.headers.id },
   { $push: { imagePath: '/newPath' } },
   (err,response)=>{
        if(err){
             console.log(err);
        }

});

关于javascript - 使用nodejs在mongodb中添加另一个图像路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46047437/

相关文章:

node.js - 使用 Fabric Node SDK 将新组织添加到现有的 Hyperledger Fabric 网络

node.js - 如何使用 kafka-node 将 AWS Bitnami Certified Kafka AMI 与 Elastic Beanstalk nodejs 环境连接起来

javascript - HTML5 透视网格

javascript - 当另一个 div 在第一个 div 中可见时显示一个 div

javascript - 如何突出显示搜索结果的颜色

html - 如何使用 Bootstrap 3 的非整数列宽制作像素完美的网站?

php 在内容前插入十六进制字符数

php - 未处理为订单表 html 输入表单创建插入语句

node.js - 使用 Node fs 从 aws s3 存储桶读取文件

javascript - 将项目添加到数组开头而不使用 unshift 方法的函数