小编Gau*_*ar 的帖子

使用Mongoose和NodeJs,Express的Mongo DB 4.0交易

我正在开发一个应用程序,我在应用程序层使用MongoDB作为数据库和Nodejs + Express,我有两个集合,即

  1. 用户
  2. 交易

在这里,我必须更新成千上万用户的钱包,如果成功创建一个新文档,每个交易的相关信息,这是我的代码:

 userModel.update({_id : ObjectId(userId)}, {$inc : {wallet : 500}}, function (err, creditInfo) {
    if(err){
        console.log(err);                            
    }
    if(creditInfo.nModified > 0) {
        newTransModel = new transModel({
            usersId: ObjectId(userId),            
            amount: winAmt,         
            type: 'credit',           
        }); 
        newTransModel.save(function (err, doc) {
            if(err){
                Cb(err); 
            }
        });
    }                            
});
Run Code Online (Sandbox Code Playgroud)

但是这个解决方案并不atomic总是有可能用金额更新用户钱包,但是在交易收集中没有创建相关交易导致经济损失.

我听说最近MongoDB已经添加Transactions了对它的支持4.0 version,我已经阅读了MongoDB文档但是无法用Node.js中的mongoose成功实现它,有人能告诉我如何使用TransactionsMongoDB 的最新功能重新实现上面的代码哪些有这些功能

Session.startTransaction()
Session.abortTransaction()
Session.commitTransaction()
Run Code Online (Sandbox Code Playgroud)

MongoDB文档:点击这里

transactions acid mongoose mongodb node.js

11
推荐指数
1
解决办法
1万
查看次数

使 Visual Studio Code IDE 识别 Javascript 中的 EJS 变量

我正在使用 Express 框架在 Nodejs 中制作一个项目,我使用 EJS 作为模板引擎,我使用 Visual Studio Code 作为 IDE。

我有一个奇怪的问题,当我<script>在同一ejs文件中的标签内使用 EJS 变量时,它会正确渲染并按预期工作,但 Visual studio Code 将其标记为错误,并表示JS Expression Expected

 <% 
    var date = matches.dateGMT;
    var matchDate = date.getTime();
  %> 

  <script type="text/javascript">
    $(function () {
        var date = <%= matchDate %> ;
        var dateUntil = new Date(date);
        $('.match_time').countdown({until: dateUntil});
    });
  </script> 
Run Code Online (Sandbox Code Playgroud)

IDE 的屏幕截图

在此输入图像描述

任何人都知道如何消除 Visual Studio Code 中显示的此错误。

javascript ejs node.js express visual-studio-code

5
推荐指数
1
解决办法
3751
查看次数

如何避免如果在NodeJs中快点地狱,快递

我正在Nodejs中创建一个项目并表达我有一个逻辑响应ajax调用查询MongoDb数据库通过其聚合框架,然后处理如此获得的结果.

MongoDBQuery 获得的结果

  [ { _id: 'ALR', count: 7 },
  { _id: 'WTK', count: 3 },
  { _id: 'BWL', count: 9 },
  { _id: 'BAT', count: 9 } ]
Run Code Online (Sandbox Code Playgroud)

此查询的回调函数

, function (err, counts) {
              if(err){
                console.log(err);
                return res.json({status:false, msg : err});
              }
              if(counts){
                console.log(counts);
                for (var i = 0; i < counts.length; i++) {
                    var type = counts[i]._id;
                    var count = counts[i].count;
                    if(type == "ALR"){
                      if(count < 5){
                        return res.json({status:false, msg : "Minimum 5 All-Rounders"}); …
Run Code Online (Sandbox Code Playgroud)

javascript node.js express

1
推荐指数
1
解决办法
780
查看次数