【问题标题】:Comparing times in Mongoose比较猫鼬的时间
【发布时间】:2020-04-25 00:54:21
【问题描述】:

我有一个具有两个属性 StartTimeEndTime 的机械架构来设置(工作时间),每当用户请求机械师接受任何服务时,他都必须输入服务时间。

现在我想将用户输入的时间与机械模式(存储在 mongooDB)中的时间进行比较,以检查用户输入的服务时间之间是否有任何机制可用.. 比较时间特别是考虑到上午和下午 ...

我使用 NODE.JSmongoose 作为数据库和 POSTMAN 来发出 API 请求。

var Mechanicschema = new Schema({
startTime: {
        type: String,
        required:true
    },
    endTime: {
        type: String,
        required: true
    },
)}

【问题讨论】:

    标签: javascript mongoose postman


    【解决方案1】:

    首先,如果可能,不要将您的startTimeendTime 存储为字符串。将它们存储为数字(Unix 时间戳)或日期对象。否则,很难为您的数据库构建一个正确的查询,这是返回最相关结果的最有效方式。它还消除了关心上午或下午的需要。

    假设您将它们存储为 Date 对象,并且您正在导出架构的 Mechanics 模型,例如:

    const Mechanicschema = new Schema(
        {
            startTime: { type: Date, required: true },
            endTime: { type: Date, required: true },
        }
    );
    
    const Mechanics = mongoose.model('mechanics', Mechanicschema );
    
    module.exports = Mechanics;
    

    您可以执行以下操作:

    const checkMechanic = async(user_date) => {
        // where user_date is expected to be a Date object similar to new Date()
        const results = await Mechanics.find({
            startTime: { $lte: user_date },
            endTime: { $gte: user_date }
        });
    
        if (results.length > 0) {
            return results;
        }
    
        return false;
    };
    

    调用此函数后,如果没有找到可用的机制,函数将返回 false,否则将返回可用于执行任务的所有机制的列表。

    如果您只关心第一个可用结果,也可以将find() 替换为findOne

    【讨论】:

      猜你喜欢
      • 2016-10-01
      • 1970-01-01
      • 2018-06-15
      • 1970-01-01
      • 2021-01-03
      • 2014-10-08
      • 2021-08-08
      • 2017-09-04
      相关资源
      最近更新 更多