我在使用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);
});
},
};
答案 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);
上述代码已成功测试。
答案 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');