【问题标题】:i want to show attendnce of a particular date in mongodb我想在 mongodb 中显示特定日期的出席情况
【发布时间】:2015-02-18 19:45:52
【问题描述】:

我有这样的架构:

               var UserSchema   = new Schema({
             name: String,
              username: { type: String, required: true, index: { unique: true }},
             password: { type: String, required: true, select: false },
             attendence: [{
                    month   :{type:String},
                    year    :{type:String},
                    day     :{ type:String},
                    attended:{type: Boolean}

            }]          
         });

我想在 Angular js 表中使用 nodejs 和 mongodb 显示每个日期(按月 + 年 + 天组合)的出席人数,即出席人数。在月色中。

【问题讨论】:

  • 那么你在所有这些任务中陷入了怎样的困境?你不知道如何查询 mongo 吗?或者您在使用角度显示结果时遇到问题?到目前为止,您尝试过什么?
  • 顺便说一句,Mongo 有一个 Date type,所以你不必像那样存储它。
  • 日期类型也显示时间。我不想要时间,因为这会造成歧义。我想存储每个用户在特定日期的单个记录

标签: angularjs node.js mongodb


【解决方案1】:

希望这段代码对你有所帮助..

这是用户详细信息的客户端 Angular js 代码,以使用日期和时间插入数据库。

    <form method="post" name="ravi" action="/">
  username:   <input type="text"  placeholder="username" name="user"  required><br/>
     date :<input type="number" placeholder="year"  name="year" min="2015" max="2017" required>
      <input type="number" placeholder="month"  name="month" min="1" max="12" required>
      <input type="number" placeholder="day" name="day" min="1" max="31" required><br/>
     Time:  <input type="number" placeholder="HH"  name="hour" min="0" max="23" required>
      <input type="number" placeholder="MM" name="minutes" min="0" max="59" required><br/>
            <input type="submit" >
    </form>

这是使用日期和时间在数据库中插入用户详细信息的服务器端..

MongoClient.connect("mongodb://localhost:27017/bhawna", function(err, db) {
  if(err) { return console.dir(err); }
  var collection2 = db.collection('sadulehistory');


     var searchitem = (req.body.user).toUpperCase();
     console.log(searchitem);
     //var searchitem1 =(req.params.aa)
     //console.log(JSON.stringify(req.body.search));
     var yr = req.body.year;
     var moy = req.body.month;
     var dom = req.body.day;
     var hr = req.body.hour;
     var mnt = req.body.minutes;


     collection2.insert({
         'searchitem': searchitem,
         'Scheduledtime': (new Date(yr, (moy - 1), dom, hr, mnt)).toLocaleString(),
         'CurrentTime': (new Date()).toLocaleString()
     }, function(err, result) {});

     res.setHeader("Access-Control-Allow-Origin", "http://localhost:3000/")
     res.setHeader("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS");
     res.setHeader("Access-Control-Allow-Headers", "Content-Type");
     res.redirect('back');
});

【讨论】:

  • --------------------------------- 2015 年 10 月 20 日的姓名出席---------------------------------- 阿卡什真尼丁假---------- ------------------------ 我想要这样的出席,在特定日期显示出席...我想在表格中显示它
  • 请说明您希望以何种形式出席
  • 我在一个页面上做了一个下拉菜单,我们在其中选择日期、月份和年份,然后进入下一页的 url,例如 localhost:8080/users/showAttendence/6/1/2015 其中 6 日期、1 个月和 2015 年然后在下一页上,我想显示一个包含两列的表格,一列具有名称,另一列显示 url 中日期的出席率
  • 我这样做了,但我想要的是一些用户在该日期没有出席,但我也想显示他们的姓名,但在出席列中显示为空白,因为他们没有出席。在后端我使用 --- apiRouter.route('/users/showAttendence/:day/:month/:year') .get(function(req, res){ console.log(req.params.day), User .find({'attendence.day':req.params.day,'attendence.month':req.params.month,'attendence.year':req.params.year},{'attendence.$': 1} ,function(err, obj){ console.log(obj); }); });
  • 如果您想按日期搜索出席情况,那么它只显示当天当前用户的结果...
【解决方案2】:

你好,bhawna,这段代码必须帮助你...... 用户的出勤客户端代码attence..index.html

<html>
  <head>
    <title>Attendence</title>
    <script src="angular.min.js"></script>
  </head>
  <body bgcolor="gray">

    <a href="Shistory.html">Attendence Listing</a>
    <div id="container" >
         <h1 align="center"> Attendence </h1>
<div align="center">
<form method="post" name="ravi" action="/">
 <input type="text"  placeholder="Name" name="Item"  required><br/>
 date :<input type="number" placeholder="year"  name="year" min="2015" max="2017" required>
  <input type="number" placeholder="month"  name="month" min="1" max="12" required>
  <input type="number" placeholder="day" name="day" min="1" max="31" required><br/>
 attended:<select name="attended">
  <option value="Present">Present</option>
  <option value="Absent">Absent</option>
    </select>
<br/>
        <input type="submit" value="Insert attendence" >
</form>
</div>

    </div>
  </body>
</html>

以及使用日期代码搜索用户的代码.. Shistory.html

<html>
  <head>
    <title>Attendence</title>
    <script src="angular.min.js"></script>
  </head>
  <body bgcolor="gray">
    <a href="index.html">Attendence</a>
    <div id="container" >
<div align="center">
 <h1 align="center"> Attendence Listing </h1>
<form method="post" name="ravi1" action="/a">
 date :<input type="number" placeholder="year"  ng-model="year"  name="year" min="2015" max="2017" required>
  <input type="number" placeholder="month"  ng-model="month" name="month" min="1" max="12" required>
  <input type="number" placeholder="day"  ng-model="day" name="day" min="1" max="31" required><br/>
    <input type="submit" value="attendence">
</form>
</div>


    </div>
  </body>
</html> 

和你的服务器端代码.. server.js

var MongoClient = require('mongodb').MongoClient;
var connect = require('connect'),
 bodyParser = require('body-parser')
var ObjectId=require('mongodb').ObjectID;
var     BSON = require('mongodb').pure().BSON,
    express = require("express"),
    app = express(); 
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
    extended: true
}));


       // app.use(express.bodyParser());
        app.use(express.static(__dirname + '/angular'));
    // index.html and Sdistory.html in public folder
        app.use(express.static(__dirname + '/public'));
            app.get("/",function(req,res){
              res.sendFile(__dirname+'/index.html');
            });


        MongoClient.connect("mongodb://localhost:27017/bhawna", function(err, db) {
          if(err) { return console.dir(err); }
          var collection2 = db.collection('users');
        app.post('/a',function(req,res){
        //console.log("hello");

        var qqw=req.body.year;
        var qqw2=req.body.month;
        var qqw3=req.body.day;
                    collection2.find({'Scheduledtime':(new Date(qqw, (qqw2-1), qqw3)).toLocaleString()}).toArray(function(err,resu)
        {
            res.end( JSON.stringify(resu));
        console.log(resu);
                                        }
        );
        });
        app.post('/',function(req,res){

         var searchitem =(req.body.Item).toUpperCase();

                var  yr=req.body.year;
                var moy=req.body.month;
                var dom=req.body.day;
                var attended=req.body.attended;

         collection2.insert({'userd':searchitem,'Scheduledtime':(new Date(yr, (moy-1), dom)).toLocaleString(),'Attended':attended},function(err,result){});

        res.setHeader("Access-Control-Allow-Origin","http://localhost:8080/")
              re

s.setHeader("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS");
           res.setHeader("Access-Control-Allow-Headers", "Content-Type");
    res.redirect('back');



      });  
    });
    app.listen(8080,function(){
      console.log("It's Started on PORT 8080");
    });

【讨论】:

  • 我也做了很多部分......我想要获取出席信息,即 app.post('/',function(req,res) 部分我需要以表
  • 是的,在前端我正在使用 angularjs 来显示表格
  • 我试图做的事情是不可能在用户模式中参加的......我必须为参加者制定另一个模式
  • BhawnaMalhotra 我已经尝试过 RavindraGalav 的回答,它可以很好地插入带有姓名和日期的出勤......不需要其他模式
  • @BhawnaMalhotra 如果您觉得这有帮助,请点击接受此答案。
猜你喜欢
  • 2015-07-28
  • 2014-10-09
  • 1970-01-01
  • 1970-01-01
  • 2021-07-29
  • 1970-01-01
  • 1970-01-01
  • 2019-12-26
  • 2021-01-19
相关资源
最近更新 更多