Scalability 可扩展性: by default, non-relational databases are split (or “shared”) across many systems instead of only one. This makes it easier to improve performance at a lower cost.
Flexibility 灵活性: new datasets and properties can be added to a document without the need to make a new table for that data.
Replication 备用性: copies of the database run in parallel so if one goes down, one of the copies becomes the new primary data source.
// example find all documents whose name is David Person.find({name:'David'},function(error,data){ if(!error){ console.log(data) }else{ console.log(error) } })
L 表示最后,只能出现在DayofWeek和DayofMonth域。如果在DayofWeek域使用5L,意味着在最后的一个星期四触发。
W 表示有效工作日(周一到周五),只能出现在DayofMonth域,系统将在离指定日期的最近的有效工作日触发事件。例如:在 DayofMonth使用5W,如果5日是星期六,则将在最近的工作日:星期五,即4日触发。如果5日是星期天,则在6日(周一)触发;如果5日在星期一到星期五中的一天,则就在5日触发。另外一点,W的最近寻找不会跨过月份 。
Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js’ package ecosystem, npm, is the largest ecosystem of open source libraries in the world.
/** A first working Express Server */ app.get('/',function(req, res){ res.send('Hello Express') })
/** Serve an HTML file */ app.get('/views/index.html',function(req,res){ let absolutePath = __dirname + '/views/index.html' res.sendFile(absolutePath) })
/** params add a '?' if the parameter is omissible */ app.get("/api/timestamp/:date_string/:addr_string?",function(req,res){ res.json(req.params.date_string) }) /** Request Headers */ app.get("/api/whoami", function (req, res) { var ip = req.header('x-forwarded-for') || req.connection.remoteAddress; var lang = req.header('Accept-Language'); var software = req.header('User-Agent'); console.log({"ip":ip,"language":lang,"software":software}) res.json({"ip":ip,"language":lang,"software":software}); });
// listen for requests const listener = app.listen(process.env.PORT, function() { console.log('Your app is listening on port ' + listener.address().port); });