Javascript 未使用Mongoose在MongoDB中保存数据
我是Nodejs世界的新手。我正在尝试使用Mongoose在MongoDB中插入数据。这个想法是Javascript 未使用Mongoose在MongoDB中保存数据,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我是Nodejs世界的新手。我正在尝试使用Mongoose在MongoDB中插入数据。这个想法是 -我将在节点上运行服务器 -任何传入的POST数据都将保存在Mongo中 当运行下面的代码时,MongoDB中不会保存任何数据,也不会显示任何错误。我是不是遗漏了什么。任何帮助都将不胜感激 下面的代码在mongoDB中为传入的http请求写入数据 var http = require('http') // http module , fs = require('fs') // file syste
-我将在节点上运行服务器 -任何传入的POST数据都将保存在Mongo中 当运行下面的代码时,MongoDB中不会保存任何数据,也不会显示任何错误。我是不是遗漏了什么。任何帮助都将不胜感激 下面的代码在mongoDB中为传入的http请求写入数据
var http = require('http') // http module
, fs = require('fs') // file system module
, qs = require('querystring') // querystring parser
, mongoose = require('mongoose');
mongoose.connect("mongodb://localhost/app_data_db");
var db = mongoose.connection;
var appDataSchema = new mongoose.Schema({
record_id: Number,
app_version: Number,
imei: String,
created_time: Date,
device_uid: String,
model: String
});
var appDataModel = mongoose.model("app_data_collection",appDataSchema);
var PORT=8080;
http.createServer(function(req,res){
if(req.method == "POST") {
var POST = {};
//parse query string
req.on('data', function(data) {
data = data.toString();
data = data.split('&');
for (var i = 0; i < data.length; i++) {
var _data = data[i].split("=");
POST[_data[0]] = _data[1];
}
db.once('open', function (callback) {
appDataModel.create({
record_id: POST["id"],
app_version: POST["app_version"],
imei: POST["imei"],
created_time: new Date((parseInt(POST["created_time"]) + 19800) *1000), // to set correct time zone IST
device_uid: POST["device_uid"],
model: POST["model"]
});
});
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('saved to DB:'+POST["id"]+'\n');
console.log('saved to DB:'+POST["id"]+'\n');
});
mongoose.disconnect();
}
}).listen(PORT);
您的代码有几个问题: 1) 您可以调用
mongoose。在回调外部断开
,这意味着它是在回调执行之前被调用的
2) 您在回调内部创建模型,但在回调外部发送响应,因此在创建模型之前发送响应
3) 最后,当实体被保存到数据库中时,该方法提供了一个回调,而您并不完全使用它
以下是修改后的代码:
mongoose.connect("mongodb://localhost/app_data_db");
db.on('open', function() {
http.createServer(function(req, res) {
if(req.method == "POST") {
var POST = {};
//parse query string
req.on('data', function(data) {
data = data.toString();
data = data.split('&');
for (var i = 0; i < data.length; i++) {
var _data = data[i].split("=");
POST[_data[0]] = _data[1];
}
appDataModel.create({
record_id: POST["id"],
app_version: POST["app_version"],
imei: POST["imei"],
created_time: new Date((parseInt(POST["created_time"]) + 19800) *1000), // to set correct time zone IST
device_uid: POST["device_uid"],
model: POST["model"]
},
function(err){
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('saved to DB:'+POST["id"]+'\n');
console.log('saved to DB:'+POST["id"]+'\n');
mongoose.disconnect();
});
});
}
}).listen(PORT);
});
mongoose.connect(“mongodb://localhost/app_data_db");
db.on('open',function(){
http.createServer(函数(req,res){
如果(请求方法==“POST”){
var POST={};
//解析查询字符串
请求开启(“数据”,功能(数据){
data=data.toString();
data=data.split('&');
对于(变量i=0;i
我想我已经成功了。我已经把猫鼬连接移到里面了。其余的都一样。因为我想发布代码,因此回答而不是评论。这可能会帮助其他人。这是完整的代码
var http = require('http') // http module
, fs = require('fs') // file system module
, qs = require('querystring') // querystring parser
, mongoose = require('mongoose');
var appDataSchema = new mongoose.Schema({
record_id: Number,
app_version: Number,
imei: String,
created_time: Date,
device_uid: String,
model: String
});
var appDataModel = mongoose.model("app_data_collection", appDataSchema);
var PORT = 8080;
http.createServer(function(req, res) {
if (req.method == "POST") {
var POST = {};
//parse query string
req.on('data', function(data) {
data = data.toString();
data = data.split('&');
for (var i = 0; i < data.length; i++) {
var _data = data[i].split("=");
POST[_data[0]] = _data[1];
}
mongoose.connect("mongodb://localhost/app_data_db");
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
appDataModel.create({
record_id: POST["id"],
app_version: POST["app_version"],
imei: POST["imei"],
created_time: new Date((parseInt(POST["created_time"]) + 19800) * 1000), // to set correct time zone IST
device_uid: POST["device_uid"],
model: POST["model"]
}, function(err) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('saved to DB:' + POST["id"] + '\n');
console.log('saved to DB:' + POST["id"] + '\n');
mongoose.disconnect();
});
});
});
}
}).listen(PORT);
var http=require('http')//http模块
,fs=require('fs')//文件系统模块
,qs=require('querystring')//querystring解析器
,mongoose=require('mongoose');
var appDataSchema=新的mongoose.Schema({
记录id:编号,
应用程序版本:编号,
imei:字符串,
创建时间:日期,
设备uid:字符串,
型号:字符串
});
var-appDataModel=mongoose.model(“app\u数据收集”,appDataSchema);
var端口=8080;
http.createServer(函数(req,res){
如果(请求方法==“POST”){
var POST={};
//解析查询字符串
请求开启(“数据”,功能(数据){
data=data.toString();
data=data.split('&');
对于(变量i=0;i
您正在创建模型,但没有将其保存到数据库中。获得了有关如何使用nodejs的更多提示。谢谢但是我尝试了上面的代码,但仍然不起作用。发出curl命令后没有输出。@vsingh我已更新了代码,请立即尝试(我已使用db open event并将服务器创建移到它的回调中)@@vsevold。谢谢你的帮助。现在这是另一个问题。第一个curl保存数据,但后续调用不会保存。连续的调用只是挂起,没有任何输出。@vsingh我建议删除mongoose。断开line
var http = require('http') // http module
, fs = require('fs') // file system module
, qs = require('querystring') // querystring parser
, mongoose = require('mongoose');
var appDataSchema = new mongoose.Schema({
record_id: Number,
app_version: Number,
imei: String,
created_time: Date,
device_uid: String,
model: String
});
var appDataModel = mongoose.model("app_data_collection", appDataSchema);
var PORT = 8080;
http.createServer(function(req, res) {
if (req.method == "POST") {
var POST = {};
//parse query string
req.on('data', function(data) {
data = data.toString();
data = data.split('&');
for (var i = 0; i < data.length; i++) {
var _data = data[i].split("=");
POST[_data[0]] = _data[1];
}
mongoose.connect("mongodb://localhost/app_data_db");
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
appDataModel.create({
record_id: POST["id"],
app_version: POST["app_version"],
imei: POST["imei"],
created_time: new Date((parseInt(POST["created_time"]) + 19800) * 1000), // to set correct time zone IST
device_uid: POST["device_uid"],
model: POST["model"]
}, function(err) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('saved to DB:' + POST["id"] + '\n');
console.log('saved to DB:' + POST["id"] + '\n');
mongoose.disconnect();
});
});
});
}
}).listen(PORT);