【问题标题】:Inconsistency while inserting documents in MongoDB, with MongoJS使用 MongoJS 在 MongoDB 中插入文档时出现不一致
【发布时间】:2017-11-19 09:39:51
【问题描述】:

我正在使用 ExpressJS 和 MongoDB 构建一个站点。我正在使用 MongoJS 建立与数据库的连接。

问题: 尝试将文档插入 MongoDB 时出现不一致。大约 1/3 的插入请求失败。

代码:

function insertWorkouts(callback,new_workout){
  var workout_date = new_workout['date'];
  db.latest_workout.insert(new_workout,{continueOnError: true, safe: true}, function(err, result) {
   console.log("DBconn insert!!");
   if(err) { console.log(err);
     throw(err);
   }
   else {
     console.log(" DBConn Inserted workout");
     // function invocation to insert workout dates
   }
  });
}

请建议我如何确保我的所有插入都成功完成。

编辑: MongoDb 连接:

var db = mongojs('mongodb://{username}:{password}@ds025xxx.mlab.com:25973/{DB name}', ['users','trainer','client','athlete','workout','client_feedback','IntermediateWorkout_Template','latest_workout','workout_dates','response_dates','sent_dates','diet','payment']);

PS:这是我在这里的第一个问题。请忽略我的错误。

【问题讨论】:

  • 完成后你永远不会打电话给callback(),我注意到了。
  • 很好,我会更新它。你认为它会解决我的问题吗?
  • 请添加连接 mongodb 客户端的方式以及 latest_workout 的模型(如果有),以便更好地理解。
  • @Himanshusharma,更新了问题。感谢您的建议。

标签: node.js mongodb express mongojs


【解决方案1】:

尝试使用Mongoose,它是一个很棒的ODM(Object Document Mapping),它意味着Mongoose将数据库中的数据转换为JavaScript对象以供您的应用程序使用。

var mongoose = require('mongoose');
// create connection.
mongoose.connect('mongodb://localhost/test');

声明其架构:

var testSchema = mongoose.Schema({
 name: String
});

我们有一个具有一个属性的模式,名称,它将是一个字符串。下一步是将我们的模式编译成 Model

var Test = mongoose.model('Test', testSchema);

每个文档都可以通过调用其 save 方法保存到数据库中。如果发生任何错误,回调的第一个参数将是一个错误。

var test = new Test({name:"Thor"});
test.save(function (err, doc) {
    if (err) return console.error(err);
    console.log(doc);
    // Doc will contain record saved in db.
});

【讨论】:

  • 感谢您的建议。会试试的。
【解决方案2】:

所以,我能够找出问题所在,这在很大程度上要感谢 Patrick Roberts 的评论。 我错过了关键的回调()。

如果有人遇到过类似的情况,请检查您的 callbacks()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-11
    • 2020-07-03
    相关资源
    最近更新 更多