Mongo无法创建数据库

时间:2016-12-29 09:33:26

标签: node.js mongodb express

我在使用mongo时遇到了一些问题(在nodeJS上使用mongoose),我认为这些是新手问题,但我是新手,我正在学习开始的步骤,基本上我在nodeJS上创建了一个架构并将应用程序连接到MongoDB的。以下是我的代码:

var config = require('./config');
var mongoose = require('mongoose');
var connectionString = "mongodb://localhost:27017/ShareIdea"

module.exports = function(){
    mongoose.Promise = global.Promise;
    var db = mongoose.connect(connectionString);

    require('../app/models/user.server.model');

    return db;
};

然后在服务器端,我实例化mongoose,但我的主要问题是表单,我想发布数据。我的表格是这样的:

<form class="form" action="/users" method="POST">
            <div class="some-class">
                <input type="radio" class="radio" name="userChoice" value="programmer" id="y" />
                <label for="y">Programmer</label>
                <input type="radio" class="radio" name="userChoice" value="inovator" id="z" />
                <label for="z">Inovator</label>
            </div>
            <input class="inp" type="text" name="firstname" placeholder="First Name">
            <input class="inp" type="text" name="lastname" placeholder="Last Name">
            <input class="inp" type="text" name="userame" placeholder="Username">
            <input class="inp" type="email" name="email" placeholder="Email">
            <input class="inp" type="password" name="password" placeholder="Password">
            <input type="submit" class="submit inp" value="Submit">
        </form>

这会调用我的路由器运行良好,在我的架构中,我将名称设置为与此处相同:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var UserSchema = new Schema({
    firstname:String,
    lastname:String,
    email:String,
    username:String,
    password:String,
    userChoice: {type: String, possibleValues: ['programmer','Inovator']}
});

mongoose.model('User',UserSchema);

所以我的数据库不像我在其他网站上读到的那样自行创建,所以我输入了

  

'使用shareIdeas'

在cmd中创建数据库,编写

  

显示dbs

没有显示我的创建数据库,当我保存表单数据时我不知道我是否实际上正在保存数据,因为我没有数据库,我不知道它是否在另一个地方保存

这是我如何保存表单数据:

var User = require('mongoose').model('User');

module.exports = {

  create: function(req,res){
  var user = new User(req.body);

  user.save(function (err) {
      if (err) {
          return next(err);
      }
      res.json(user);
  });


 },

};

3 个答案:

答案 0 :(得分:0)

所以这里将用户更改为User.And传递包含要保存的数据的用户。

var User = require('mongoose')。model('User');

module.exports = {

  create: function(req,res){
  var user = new User(req.body);

  User.save(user, function (err) {
      if (err) {
          return next(err);
      }
      res.json(user);
  });


 },

};

答案 1 :(得分:0)

这是工作代码。

使用post方法调用模块中定义的open(connectToMongoDatabase)和close(closeMongoConnection)连接函数。

var express = require('express');
var mongoose = require('mongoose');
var connectionString = "mongodb://localhost:27017/ShareIdea"

module.exports = {

    connectToMongoDatabase: function () {
        mongoose.Promise = global.Promise;
        mongoose.connect(connectionString);
        console.log("MongoDB connected ...");        
    },

    closeMongoConnection : function () {
        mongoose.connection.close();
    }
};

var app = express();

var bodyParser = require('body-parser');
var app = express();
var urlencoded_body_parser = bodyParser.urlencoded({
    extended: true
});

app.use(urlencoded_body_parser);

var Schema = mongoose.Schema;

var UserSchema = new Schema({
    firstname: String,
    lastname: String,
    email: String,
    username: String,
    password: String,
    userChoice: { type: String, possibleValues: ['programmer', 'Inovator'] }
});

var UserModel = mongoose.model('User', UserSchema);

var exports = module.exports;

app.post("/users", function (req, res) {

    console.log(exports);
    exports.connectToMongoDatabase();
    console.log(req.body);
    var user = new UserModel(req.body);

    user.save(function (err, success) {
        console.log(err);
        if (err) {
            console.log(err);
            res.send(err);
        }
        else {
            console.log("inserted.......");
            console.log(success);
            res.json(success);
        }
        exports.closeMongoConnection();
    });

});

app.listen(3000);

上述代码已成功测试。

User collection

User collection data

答案 2 :(得分:0)

您创建了名为ShareIdea的数据库,但是您提供了use shareIdeas此查询如何显示您已创建的数据库中的数据。您应该像use ShareIdea这样使用。想要查看是否使用show dbs创建了数据库此查询显示了包含数据的数据库。我在config.js文件中创建了数据库:

module.exports = {
'mongoUrl' : 'mongodb://localhost:27017/live_stream'
}

在我的app.js文件中,我提供了与数据库和服务器文件的连接

var config = require('./config');
var mongoose = require('mongoose');
var db = mongoose.connection;
mongoose.connect(config.mongoUrl);
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function () {
console.log("Connected correctly to server");
});

创建架构后,您应该导入服务器文件,即app.js

var User= require('./models/User');