javascript - 比较猫鼬的时间
问题描述
我有一个具有两个属性StartTime
和EndTime
设置(工作时间)的机械架构,每当用户向机械师请求接受任何服务时,他都必须输入服务时间。
现在我想将用户输入的时间与机械模式中的时间(存储在 mongooDB 中)进行比较,以检查用户输入的服务时间之间是否有任何机制可用..比较时间特别是考虑到上午和下午...
我使用NODE.JS、mongoose作为数据库和POSTMAN来发出 API 请求。
var Mechanicschema = new Schema({
startTime: {
type: String,
required:true
},
endTime: {
type: String,
required: true
},
)}
解决方案
首先,如果可能的话,不要将你的startTime
and存储endTime
为字符串。将它们存储为数字(Unix 时间戳)或日期对象。否则,很难为您的数据库构建一个正确的查询,这是返回最相关结果的最有效方式。它还消除了关心 AM 或 PM 的需要。
假设您将它们存储为 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
推荐阅读
- angular - Angular中基于页面大小的多个API调用
- css - SASS:增加字体大小会增加所有内容的大小
- haproxy - 这个 haproxy 声明是什么意思:不幸的是,许多管理员混淆了“以 root 身份启动”和“以 root 身份运行”
- c# - 如何安全地迭代 IAsyncEnumerable 以向下游发送集合以批量处理消息
- javascript - jQuery - countTo 插件在本地工作,但不在服务器上
- php - 付款后基于购买产品的 Woocommerce 自定义重定向
- reactjs - React-router v5.2 路由不工作,只显示主页
- php - PHP 页面中途停止加载 - 未完成代码
- graphics - bfloat16 曾经用于图形吗?
- laravel - Base64 到 PNG 转换的图像未显示