繁体   English   中英

如何在nodejs的中间件中使用mongodb查询保存数据

[英]How to save data using mongodb query in middleware in nodejs

我想使用 node.js 中的中间件使用 mongodb 查询保存数据。 请提供一些示例代码?

尝试这个。 它适用于插入和更新(upsert)。

// app.js

const express = require('express');
const bodyParser = require('body-parser');
const MongoClient = require('mongodb').MongoClient;
const mongodb_url = process.env.MONGO_URL || "mongodb://localhost:27017";
const mongodb_dbname = 'test_db';
const port = process.env.PORT || 3006;

const app = express();
app.use(express.json())
app.use(bodyParser.urlencoded({ extended: true}));
app.use(bodyParser.json({ extended: true}));

app.post('/api/post/:identifier', (req, res) => {
    const identifier = req.params.identifier;
    const content = req.body.payload;
    MongoClient.connect(`${mongodb_url}`, { useNewUrlParser: true }, (err, client) => {
        if (!err) {
            let db = client.db(mongodb_dbname);
            db.collection('posts')
                .updateOne(
                    { identifier: identifier },
                    { $set: { content: content } },
                    { upsert: true }
                )
                .then((output) => {
                    res.status(202).send({ message: "Sent"});
                })
                .catch((error) => {
                    res.status(500).send({
                        error_code: 500,
                        error_message: `Error while updating data - ${error}`
                    });
                });
            client.close();
        } else {
            res.status(500).send({
                error_code: 500,
                error_message: 'Error while connecting to database'
            });
        }
    });
});

app.listen(port, () => {
    console.log(`API bootstrapped on port ${port}...`);
});

使用以下package.json文件:

{
  "name": "mongo-upsert",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node app.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.17.1",
    "mongodb": "^3.6.0"
  }
}

当作为localhost:3006/api/post/my-post调用时,请求正文包含:

{
    "payload": "Hello world"
}

此代码将插入 MongoDB 文档,例如:

{
    "_id" : ObjectId("5f3d272cbd52c9c109ea9baa"),
    "identifier" : "my-post",
    "content" : "Hello world"
}

上述代码工作的先决条件:

  1. 安装mongodb
  2. 拥有一个名为test_db的数据库
  3. 拥有一个名为posts的集合

在这个例子中,我们添加了一个 post content ,由一个identifier ,为了简单起见,我在POST定义中添加了一个路径参数。

使用npm install安装依赖项。 使用npm start运行应用程序。

祝你好运。

查看W3Schools NodeJS MongoDB

我没有足够的代表发表评论,所以这里有一个答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM