【问题标题】:Inserting into MongoDB using Node js使用 Node js 插入 MongoDB
【发布时间】:2014-03-14 11:29:21
【问题描述】:

使用 mongojs 模块插入 Mongo DB 失败,我有两个函数,setupMongoDB 和 pushRequestsToMongoDB(它们的作用是不言自明的)。 我从我的网页收到一个请求并将数据解析为 JSON。

控制台如下所示:

created worker: 22987
created worker: 22989
created worker: 22990
created worker: 22991
{ type: 'line',geometry: '`tvtBat~_Wnaoi@_kc~BzlxZbrvdA{fw[`mw}@' }
object
[Error: connection closed]

产生错误的代码如下所示:

 var mongo=require('mongojs');
 var collections=['testData'];
 var dbURL='localhost:3000/mapData';
 var db=mongo.connect(dbURL,collections);

 var insert=function(obj)
 {
db.testData.save(obj,function(err,obj){
      if(err || !obj)
      {
            console.log(err);
      }
      else
      {
        console.log('Data successfully inserted with _id '+obj['_id']);
      } 
  });
};


exports.insert=insert;

这是我使用函数的方式:

var express=require('express');
var app=express();
var mongo=require('./mongo_try');
app.use(express.bodyParser());
app.post('/map',function(req,res){
    var data=req.body;
    console.log(data);
    console.log(typeof data);
    mongo.insert(data);
});

【问题讨论】:

    标签: javascript node.js mongodb mongojs


    【解决方案1】:

    我对“conn.markers.save”打算做什么感到非常困惑。这是猫鼬的叫声吗? Mongodb 节点本机没有“保存”命令。您的意思是获取“标记”集合,然后插入数据吗?您不需要对其进行字符串化。

    你在用这个:https://github.com/mafintosh/mongojs 吗?

    您也不应该对保存命令进行字符串化。更改此行:

    conn.markers.save(obj,function(err,data){
    

    或者如果“obj”的内容已经是字符串,则改为:

    conn.markers.save(JSON.parse(obj),function(err,data){
    

    【讨论】:

    • 我使用的是 npm 自带的 mongojs 模块。我不知道 mongoose 是什么,其余的假设都是正确的。我想创建或获取标记集合并插入数据。
    • 您可能可以简单地使用本机 mongodb 驱动程序而不是 mongojs 项目,除非它可以满足您的需要。 github.com/mongodb/node-mongodb-native 你会注意到 mongojs 项目使用了这些驱动程序。
    • 你认为我在使用 mongojs 模块时做错了什么?
    • 您正在向它发送一个字符串,它需要一个对象。就像我在答案中所说的那样。
    • 我明白你在说什么,我将代码更改为使用express.bodyParser 来获取data 作为oject
    猜你喜欢
    • 1970-01-01
    • 2017-10-17
    • 2016-06-16
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 2012-05-28
    相关资源
    最近更新 更多