【问题标题】:nodejs mongodb storing a variable from a function when posting a new rownodejs mongodb在发布新行时存储函数中的变量
【发布时间】:2021-07-27 14:44:34
【问题描述】:

您好,我有一个 mongodb 表,正在处理 multer 文件上传 我使用 readFile 来上传文件并在行中搜索某些单词 这是我的 POST API

router.post('/create',multer({ storage : storage}).any(), (req, res) => {
    var sample = fs.readFileSync('./uploads/'+req.files[0].filename,'utf8');
    function fileToString() {
        let arr = sample.split(/\r?\n/);
        arr.forEach((step , idx)=> {
        if(step.includes("step")){
        console.log(step);
        return step;
        }
    });
     }
     
    
    var tc = new Testcase({
        name: req.body.name,
        upload: req.files[0].filename ,
        run: fileToString(), //this variable is the one i want to store the result of the function in
        modify: req.body.modify,
        delete: req.body.delete,
        step1: req.body.step1,
        step2: req.body.step2,
        step3: req.body.step3,
        step4: req.body.step4,
        step5: req.body.step5,
        step6: req.body.step6,
        step7: req.body.step7,
    });
    
    
    console.log(req.files[0].filename);
    tc.save((err, doc) => {
        if (err) { res.status(401).send("error") }
        else { 
            res.status(200).send(doc)
        }
    });
});

函数 fileToString() 可以正常运行,控制台返回我需要的内容 但是,当我运行创建 API 并向表中添加新行时,我希望将返回的值直接存储到变量 run 中 请问我该怎么做,我是nodejs和mongodb的新手

【问题讨论】:

  • 请同时添加您的 insertOne / insertMany 方法调用
  • 还提供Testcase类的实现
  • 我没有使用 insertOne / insertMany 方法,我发布的是我如何插入到我的数据库中,我添加了我的模块和另一个回复中的实现,请你检查一下

标签: node.js mongodb express fs readfile


【解决方案1】:

这是我的模块

const mongoose = require('mongoose');

const Schema = mongoose.Schema;

const testcaseSchema = new Schema({
    name: {type : String, required : true , unique : true},
    upload: String,
    run: String,
    modify: String,
    delete: String,
    step1: String,
    step2: String,
    step3: String,
    step4: String,
    step5: String,
    step6: String,
    step7: String,
    checked: { type: Boolean, default: false }

    
    });
module.exports = mongoose.model('testcase', testcaseSchema, 'testcases');

这是实现以及我如何上传文件

const express = require('express');
var router = express.Router();
var ObjectId = require('mongoose').Types.ObjectId;
const mongoose = require('mongoose')
const  ls  = require('child_process');
const multer = require('multer');
var fs = require('fs');

const  Testcase  = require('../modules/testcase');

//File Upload
const storage = multer.diskStorage({
    destination: (req, file, callBack) => {
        -callBack(null, "./uploads/");
        +callBack(null, "uploads/")
    },
    filename: (req, file, callBack) => {
        //callBack(null, `FunOfHeuristic_${file.originalname}`)
        const name = file.originalname
        callBack(null, name); 
    }
})

【讨论】:

    猜你喜欢
    • 2019-12-28
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多