【问题标题】:Impossible to create a document in Mongodb with Mongoose and NodeJS无法使用 Mongoose 和 NodeJS 在 Mongodb 中创建文档
【发布时间】:2018-03-11 01:47:30
【问题描述】:

我对 Mangoose 和 NodeJS 有疑问。我解释一下:

  • 我有一个 MongoDB “babyfootdb”,与 Mongoose 的连接正常。
  • 在数据库中,我有一个名为 player 的集合。 我只想在“玩家”集合中添加一个测试文档,一个玩家(姓名、电子邮件、密码)。

但它不起作用,我没有错误但没有创建文档。

这是我的代码:

Server.js:

// Set up
var express  = require('express');
var app      = express();
var mongoose = require('mongoose');

//Connection
var connection = mongoose.createConnection('mongodb://localhost/babyfootdb');
connection.on("error", function(){
    console.log("Error");
});
connection.on("open", function(){
    console.log("Connected");
});

// Models
require("./models")(app); 

在 models.js 中:

var mongoose = require('mongoose');

module.exports = function(app){


    //Schema
    var playerSchema = mongoose.Schema({
        name: String,
        mail : String,
        password: String,
    }, {collection : 'players'});

    //Model
    var Player = mongoose.model('Player', playerSchema);

    //Create
    Player.create({name : "test",mail : "test",password : "test"},
    function(){   
        Player.find(function(err, players){
            console.log("find");
            if(err) return console.error(err);
            console.log(players); 
        });
    });
}

对不起,我的英语不好,但如果您有帮助我的想法,请提前致谢。

【问题讨论】:

    标签: node.js mongodb express mongoose


    【解决方案1】:

    它已修复。我换了:

    //Connection
    var connection = mongoose.createConnection('mongodb://localhost/babyfootdb');
    connection.on("error", function(){
        console.log("Error");
    });
    connection.on("open", function(){
        console.log("Connected");
    });
    

    作者:

    mongoose.connect('mongodb://localhost/bfdb');
    mongoose.connection.on("error", function(){
        console.log("Error");
    });
    mongoose.connection.on("open", function(){
        console.log("Connected");   
    });
    

    【讨论】:

      【解决方案2】:

      由于您将模型声明为Player,请尝试使用Player.create(documentToBeCreated)。您的架构中也没有定义pseudo 字段,但您尝试在create() 中使用它,因此可能会导致一些问题。创建文档的另一种方法是:
      new Player(docToBeCreated).save(callback(err, player))。让我们知道这是否有帮助:)

      【讨论】:

      • 对不起,这是我的错,我已将 Joueur 重命名为 Player 并将 Pseudo 重命名为 Name 以在此处发布。我试过了,.save() 也有同样的问题:(
      • 我刚刚注意到这一点,但是您可能需要在连接到 mongodb 时包含端口,例如mongodb://localhost:27017/babyfootdb。 27017 是本地使用时 mongodb 的标准端口。为了帮助进行故障排除,请尝试下载类似 Compass 的 GUI
      • 谢谢。我尝试了,但没有任何改变,连接正常。我已经用Compass了,真的是create和save函数没用,create函数里面的log是不显示在console里的。我不明白
      • 啊哈...尝试在create() 中使用function(err, user) { console.log(err, user) } 进行回调。阅读更多here
      • 谢谢,但是日志没有出现:(
      猜你喜欢
      • 1970-01-01
      • 2015-10-13
      • 2019-06-09
      • 1970-01-01
      • 2018-09-08
      • 1970-01-01
      • 2017-03-15
      • 2015-05-25
      • 2021-12-29
      相关资源
      最近更新 更多