【问题标题】:Update every item in MongoDb usimg expressjs,mongoose,body-parser?更新MongoDb usimg expressjs,mongoose,body-parser中的每个项目?
【发布时间】:2018-07-17 03:16:54
【问题描述】:

我有两个用于与数据库交互的文件。我使用过 expressjs、mongoose 和 body-parser。我的数据库有三个字段 text、key 和 status。我想更新数据库中所有条目的状态。我怎样才能更新实现这一目标?

我正在考虑删除所有条目并重新创建所有条目。这可能不是正确的方法

index.js

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var cors = require('cors');

app.use(bodyParser.json());
app.use(cors());

Items = require('./items.js');

mongoose.connect('mongodb://localhost/taskDb');
var db = mongoose.connection;

app.get("/", (req, res) => {
    res.send('Visit /api/*****');
});

app.get("/api/items", (req, res) => {
    Items.getItems(function (err, items) {
        if (err) {
            throw err;
        }
        res.json(items);
    });
});

app.post("/api/items", (req, res) => {
    var item = req.body;
    console.log(item + "item post");
    Items.addItem(item, function (err, items) {
        if (err) {
            throw err;
        }
        res.json(items);
    });
});

app.post("/api/items/complete/", (req, res) => {
    var item = req.body;
    console.log(item + "item post");
    Items.addItem(item, function (err, items) {
        if (err) {
            throw err;
        }
        res.json(items);
    });
});


app.delete("/api/items/:_key", (req, res) => {
    var key =req.params._key;
    Items.deleteItem(key, function (err, items) {
        if (err) {
            throw err;
        }
        res.json(items);
    });
});

app.delete("/api/items/", (req, res) => {
    var status = "completed";
    Items.deleteItems(status, function (err, items) {
        if (err) {
            throw err;
        }
        res.json(items);
    });
});

app.put("/api/items/:_key", (req, res) => {
    console.log(key);

    var key = req.params._key;
    var item = req.body;

    Items.updateItem(key, item, {}, function (err, items) {                                
        if (err) {
            throw err;
        }
        res.json(items);
    });
});

app.listen(3005, () => {
    console.log('Listening on port 3005...');
});

items.js

var mongoose = require('mongoose');

var itemSchema = mongoose.Schema({
    text: {
        type: String,
        required: true
    },
    key: {
        type: String,
        required: true
    },
    status: {
        type: String,
        required: true
    }
});

var Item = module.exports = mongoose.model('item', itemSchema);

module.exports.getItems = function (callback, limit) {
    Item.find(callback).limit(limit);
}

module.exports.addItem = function (item, callback) {
    Item.create(item, callback);
}

module.exports.deleteItem = function (key, callback) {
    var query = {key: key};
    Item.remove(query, callback);
}

module.exports.deleteItems = function (status, callback) {
    var query = {status: status};
    Item.remove(query, callback);
}

module.exports.updateItem = function (key, item, options, callback) {
    var query = {key: key};
    var update = {
        text: item.text,
        key: item.key,
        status: item.status
    }
    Item.updateOne(query, update, {}, callback);
}

【问题讨论】:

    标签: javascript mongodb express mongoose body-parser


    【解决方案1】:

    要更新集合中的所有条目,您可以使用 update 函数和选项 multi:true

    这里是猫鼬文档:Updating Documents

    在你的情况下,我测试了 3 个项目:

    然后我执行了命令:

     var mongoose = require('mongoose');
    
      var ItemSchema = new mongoose.Schema({
        text: {
          type: String,
          required: true
        },
        key: {
          type: String,
          required: true
        },
        status: {
          type: String,
          required: true
        }
      });
    
      var ItemModel = mongoose.model('Item', ItemSchema);
    
      ItemModel.update({status:'A'},{$set:{key:'update key'}},{multi:true}, function (err, items) {
        if (err) {
          throw err;
        }
        console.log(items);
      });
    

    在这里您可以看到所有具有 status='A' 的项目都已更新为 key:'update key'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-28
      • 2020-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多