【问题标题】:Inserting Into A Mongodb Collection (Newbie)插入到 Mongodb 集合中(新手)
【发布时间】:2017-02-25 02:22:50
【问题描述】:

我是 nodejs 和 mongodb 的新手。我正在尝试将 newClass 插入到类集合中。除了这个功能,一切似乎都在工作。它给出了 500 错误并且不保存类。

我检查了 mongodb 文档,它似乎是正确的。有人可以指出我正确的方向吗?

路线

Class.createNewClass(newClass, function(err){
    if (err){
        console.log(err);
        res.send(err);
    } else {
        console.log('Class saved.")
    }
})

型号

module.exports.createNewClass = function(newClass, callback){
    Class.insert({newClass}, callback);
}

【问题讨论】:

    标签: javascript node.js mongodb mongoose


    【解决方案1】:

    您的 createNewClass 函数中存在语法错误,假设 newClass 变量是一个包含您要保存到新文档的所有键:值对的对象,您应该删除大括号:

    module.exports.createNewClass = function(newClass, callback){
        Class.insert(newClass, callback);
    }
    

    也就是说,您发布的路线代码对我来说看起来不太像路线,因此您的转录可能没有显示其他错误。

    【讨论】:

      【解决方案2】:

      我不太清楚您应用的整体结构,但这里有一个非常简单的 Express 应用,可以将新类插入数据库。

      var express = require('express');
      var bodyParser = require('body-parser');
      
      var mongodb = require('mongodb');
      var app = express();
      app.use(bodyParser.json());
      
      var MongoClient = require('mongodb').MongoClient;
      var db;
      
      // Initialize connection once
      MongoClient.connect("mongodb://localhost:27017/school", function(err, database) {
        if(err) throw err;
      
        db = database;
      
        // Start the application after the database connection is ready
        app.listen(3000);
        console.log("Listening on port 3000");
      });
      
      app.post('/class', function(req,res) {
        var collection = db.collection('classes');
        var newClass = req.body;
        console.log(req.body);
        collection.insert(newClass);
        res.json(newClass);
      });
      

      【讨论】:

        【解决方案3】:

        在您的模型中将其更改为:

        module.exports.createNewClass = function(newClass, callback){
              Class.collection.insert(newClass, callback);
        };
        

        检查“类”是否应该是模式模型对象。

          module.exports.createNewClass = function(newClass, callback){
              new Class(newClass).save(callback);
            };
        

        这是基本的猫鼬方式。在猫鼬中,我们对多个文档使用“插入”,但您也可以对单个文档使用插入。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-08-24
          • 2018-08-31
          • 1970-01-01
          • 1970-01-01
          • 2016-09-22
          相关资源
          最近更新 更多