我正在开发一个应用程序,我在应用程序层使用MongoDB作为数据库和Nodejs + Express,我有两个集合,即
在这里,我必须更新成千上万用户的钱包,如果成功创建一个新文档,每个交易的相关信息,这是我的代码:
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文档:点击这里
我正在使用 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 中显示的此错误。
我正在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)