ÔÚ Sails ÖÐÉè¼ÆÊý¾Ý·ÃÎʲãµÄÔÐÍ
Sails.js ÊÇͨ¹ý JavaScript ¶ÔÏó±íʾµÄ£¬ÕâЩ¶ÔÏó¿É´æ´¢ÔÚÈκÎÀàÐ͵ÄÊý¾Ý´æ´¢ÖÐ
¡ª ¹ØÏµ¡¢ÃæÏòÎĵµ»òÆäËû´æ´¢¡£ÔÚ Sails.js Öпª·¢ÄúµÄµÚÒ»¸öÄ£ÐÍ£¬È»ºó¿ªÊ¼Ê¹Óà Sails À¶Í¼£¬ºóÕßÌṩÁ˶ÔÊý¾ÝÇý¶¯µÄÓ¦ÓóÌÐòÎÞ´¦²»ÔڵĴ´½¨¡¢¶ÁÈ¡¡¢¸üкÍɾ³ý¹¦ÄܵÄÄÚÖÃÖ§³Ö¡£
ÔÚ¿ª·¢»·¾³ÖÐÉèÖÃÁËÒ»¸ö±¾µØ°²×°£¬´´½¨ÁËÒ»¸ö Sails.js Ó¦ÓóÌÐòµÄ¿ò¼Ü£¬²¢ÔÚ
IBM Bluemix? ÉÏÆô¶¯Ëü¡£¿ª·¢¿ò¼ÜÓ¦ÓóÌÐòÓÐÖúÓÚÁ˽â Sails.js Öеıà³ÌµÄ»ù´¡ÖªÊ¶¡£ÏÖÔÚÎÒÃǽ«Æ²¿ª
¡°Hello World¡± Ó¦ÓóÌÐòµÄ¼òµ¥ÀÖȤ£¬´´½¨Ò»¸ö¸ü¼ÓÕæÊµµÄʾÀýÓ¦ÓóÌÐò¡£
Äú»á»ØÏëÆðʾÀýÓ¦ÓóÌÐòÊÇÒ»¸ö²©¿Í API£¬ÆäÖм¯³ÉÁË´«Í³ REST ¼Ü¹¹µÄ²¿·ÖÔªËØ¡£¸Ã²©¿ÍÓ¦ÓóÌÐò½«±£´æ²¢·¢²¼²©¿ÍÌõÄ¿£¬»¹½«Ö´ÐеäÐ͵IJ©¿Í²Ù×÷£¬±ÈÈç¸ú×ÙÆÀÂÛ£¬Éú³ÉºÍÏÔʾ
RSS ÌáÒªµÈ¡£HTTP API Éè¼ÆÓÐÖúÓÚ½¨Á¢Ò»¸öÎȶ¨µÄ¿ÉÀ©Õ¹ºó¶Ë£¬¶øÊÓͼȡ¾öÓÚÒÆ¶¯¡¢×ÀÃæ»ò Web
¿Í»§¶Ë¡£
²©¿Í API ÓµÓÐÏà¶Ô½ÏСµÄÓÃÀý¼¯ºÏ£¬ÖÁÉÙÔÚ¿ªÊ¼µÄʱºòÊÇÕâÑù¡£Óû§Äܹ»´´½¨ÈκÎÊýÁ¿µÄ²©¿ÍÌõÄ¿£¬¶øÇÒÿ¸öÌõÄ¿¶¼½«°üº¬±êÌâ¡¢ÕýÎÄ¡¢±ê¼ÇºÍ×÷Õß¡£ÕâЩÌõÄ¿»¹½«ÏÔʾһ¸ö´´½¨Ê±¼ä´ÁºÍÁíÒ»¸ö¸üÐÂʱ¼ä´Á¡£
ÔÚÒÔºó£¬Äú½«Öع¹¸ÃÓ¦ÓóÌÐò²¢Ìí¼Ó¸ü¶àµÄ¹¦ÄÜ£¬µ«ÏÖÔÚÎÒÃǽ«±£³ÖËüµÄ¼òµ¥ÐÔ¡£
½¨Ä£¸ÃÓ¦ÓóÌÐò
¹ØÓÚ±¾ÏµÁÐ Ïñ Sails.js µÄͬÀà²úÆ· Ruby on Rails
Ò»Ñù£¬Sails.js ÊÇÒ»¸öÖ¼ÔÚ°ïÖú¿ª·¢ÈËÔ±¹¹½¨ Web Ó¦ÓóÌÐòµÄ¿ò¼Ü¡£Ä¬ÈÏÇé¿öÏ£¬Rails ÓÃÓÚ¹¹½¨ÔÚ·þÎñÆ÷ÉÏÉú³É
HTML£¬²¢½«Æä·¢»Ø¸øä¯ÀÀÆ÷µÄÓ¦ÓóÌÐò£¬Óë Ruby on Rails ²»Í¬µÄÊÇ£¬Sails Ϊ¹¹½¨ HTTP
API ÌṩÁ˺ܺõĿªÏä¼´ÓõÄÖ§³Ö¡£ÕâÖÖÉè¼ÆÓÐÖúÓÚÔÚ¿Í»§¶ËºÍ·þÎñÆ÷Ö®¼äʵÏÖ¸üºÃµÄ¹Ø×¢µã·ÖÀ룬²¢´Ù½ø¿Í»§¶ËºÍ·þÎñÆ÷Ö®¼äµÄ¸ü¶àµÄ»¥²Ù×÷ÐÔ¡£ÔÚ±¾ÏµÁÐÖУ¬Web
¿ª·¢ÈËÔ±ºÍ½Ìʦ Ted Neward ½«ÏòÄú½éÉÜ Sails.js¡£HTTP API ʾÀýÓ¦ÓóÌÐò¿ÉÒÔÊÇ
AngularJS¡¢React »ò¼¸ºõÆäËûÈκοͻ§¶ËÓ¦ÓóÌÐòµÄºó¶Ë¡£
´ÓÍ·¿ª·¢ MVC Ó¦ÓóÌÐòʱ£¬Äú¿ÉÄܻῼÂÇÓ¦¸Ã´ÓÄ£ÐÍ»¹ÊÇ´Ó¿ØÖÆÆ÷ÔªËØ¿ªÊ¼¡£ÔÚ±ØÒªÊ±£¬²»½ö¿ÉÒÔ´Ó¿ØÖÆÆ÷¿ªÊ¼£¬Ò²¿ÉÒÔ´Ó¿ØÖÆÆ÷¹¹½¨ÍêÕûµÄÓ¦ÓóÌÐò£ºÄúÖ»ÐèΪӦÓóÌÐòµÄÿ¸ö¹¦Äܶ¨ÒåÒ»¸ö¿ØÖÆÆ÷£¬²¢ÓëÊý¾Ý¿â´«ÊäÊý¾Ý¡£ÄúʼÖÕ¿ÉÒÔÔÚÒÔºóÖØ¹¹¸ÃÓ¦ÓóÌÐò£¬´ÓÄúµÄ¿ØÖÆÆ÷¼Ü¹¹ÖÐÌáȡģÐÍ¡£
ÔÚ Sails.js ÖУ¬´ÓÄ£ÐÍ¿ªÊ¼µÄЧÂʸü¸ßһЩ¡£²»½ö Sails
Ä£ÐÍÈÝÒ×Éè¼Æ£¬Sails »¹ÌṩÁËһϵÁгÆÎªÀ¶Í¼ µÄ¿ØÖÆÆ÷·ÓÉ£¬ËüÃÇ»á×Ô¶¯Ó¦ÓÃÓÚ²»Í¬µÄÄ£ÐÍÀàÐÍ¡£ÄúÐèÒª×öµÄÖ»ÊÇÔÚ
Sails Öж¨ÒåÄ£ÐÍ£¬Sails ½«×Ô¶¯Îª¸ÃÄ£Ð͵Ļù±¾Êý¾Ý´æ´¢ºÍ¼ìË÷¹¦ÄÜÉèÖà API ·Óɺ͹¦ÄÜ¡£
Sails.js µÄÄ£ÐÍÓÅÏÈ·½·¨Ò²·Ç³£ÊÊºÏ HTTP API Ó¦ÓóÌÐòµÄ
RESTful Éè¼Æ¡£REST Ï£Íû¹«¿ª×ÊÔ´£¬ÄúÒÑÔÚÄ£ÐÍÖÐÌáǰ¶¨ÒåÁËÕâЩ×ÊÔ´¡£
Ϊ²©¿Í API ½¨Ä£ºÜÈÝÒ×£ºÖ»Ð趨ÒåÓ¦ÓóÌÐòËùÐèµÄÄ£ÐÍÀàÐÍ£¬Sails
ĬÈÏÇé¿öÏ»áΪËüÃǽ¨Á¢À¶Í¼¡£ÔÚÓµÓÐÄ£ÐͺÍÀ¶Í¼ºó£¬»¹Òª¶¨ÒåËüÃÇÖ®¼äµÄ¹ØÏµ£¬²¢Ìí¼ÓһЩ¶ÀÁ¢¿ØÖÆÆ÷À´´¦ÀíÕû¸öÓ¦ÓóÌÐòµÄÐÐΪ¡£¶ÔÓڸò©¿Í
API£¬ÎÒÃÇÐèÒªÒ»¸ö¶ÀÁ¢¿ØÖÆÆ÷À´²éÕÒÆÀ¼Û×î¸ßµÄ²©¿ÍÌõÄ¿£¬»¹ÐèÒªÁíÒ»¸ö¿ØÖÆÆ÷À´Ìṩ²©¿ÍÌõÄ¿µÄ RSS ÌáÒª¡£
Ò»°ã»¯µÄ½¨Ä£
¿ª·¢µÚÒ»¸ö Sails Ä£ÐÍ֮ǰ£¬ÐèҪȷ¶¨ÈçºÎ ½¨Ä£ÄúµÄÊý¾Ý£ºÄú½«Ê¹ÓùØÏµÊµÌå¡¢ÎĵµÊµÌ廹ÊÇÆäËûʵÌ壿ÔÚ
Sails ÖУ¬´ð°¸ÊÇÊÓ¾ßÌåÇé¿ö¶ø¶¨¡£
Õý³£Çé¿öÏ£¬ÔÚʹÓÃÆäËûÈí¼þ¶ÑÕ»£¨±ÈÈç MEAN ¶ÑÕ»£©Ê±£¬Êý¾Ý´æ´¢ÒýÇæÊǶÑÕ»µÄÖØµã²¿·Ö¡£Òò´Ë£¬ÄúʹÓøöÑջΪӦÓóÌÐò¶¨ÒåµÄÌõÄ¿ÊǸù¾ÝÊý¾Ý´æ´¢ÒýÇæ×Ô¼ºµÄÆ«ºÃÑϸñ½¨Ä£µÄ¡£ÀýÈ磬ÔÚʹÓÃ
Rails ʱ£¬Äú½«¹¹½¨Óë¹ØÏµÊµÌå½ôÃܹØÁªµÄÄ£ÐÍ£»Ê¹Óà MEAN ʱ£¬Äú½«¹¹½¨ÃæÏòÎĵµµÄÄ£ÐÍ¡£
²»Í¬ÓÚÆäËûһЩ¶ÑÕ»£¬Sails ´ÓÊý¾Ý´æ´¢ÒýÇæÖгéÏó³öÊý¾Ý²Ù×÷¡£Òò´Ë£¬Äú¿ÉÒÔÑ¡Ôñ
MySQL ºÍ Postgres µÈ¹ØÏµÊý¾Ý¿â£¬MongoDB µÈÎĵµÊý¾Ý¿â£¬Redis µÈ¼üÖµ´æ´¢£¬ÉõÖÁ¿ÉÒÔÑ¡ÔñÄÚ´æÐÍ»ò×Ô¶¨ÒåµÄ¼òµ¥´ÅÅÌ´æ´¢¸ñʽ¡£´Ë³éÏóÔÚÊý¾Ý´æ´¢ÒýÇæµÄÑ¡ÔñÉÏΪÄúÌṩÁ˺ܸߵÄÁé»îÐÔ£¬µ«Ò²ÎªÄúÁôÏÂÁËһЩһ°ãÐÔÑ¡Ïî¡££¨ÕâÊǹ¦ÄÜ»¹ÊÇÏÞÖÆÍêȫȡ¾öÓÚÄúµÄ¾ö¶¨¡££©
¼Çס²îÒ죺ORM ºÍ ODM
¶ÔÏó¹ØÏµÓ³Éä (ORM) ÊÇ¿ª·¢ÈËÔ±ÓÃÓÚ¼õÇáÃæÏò¶ÔÏóµÄ±à³ÌÓë¹ØÏµÊý¾Ý´æ´¢Ö®¼äµÄÉÏÏÂÎIJîÒ죨»ò×迹ʧÅ䣩µÄ¹¤¾ß¡£Èç¹ûÄúÊÇÒ»Ãû
Java ¿ª·¢ÈËÔ±£¬Äú»òÐíʹÓùý»òÌý˵¹ý Hibernate ºÍ Java Persistence API
µÈ ORM ¹¤¾ß¡£Èç¹ûʹÓà .NET ×÷Ϊƽ̨£¬ÄÇôÄú¿ÉÄÜÖªµÀ Entity Framework¡£
¾ÍÏñʹÓùØÏµÊý¾Ý´æ´¢µÄ¿ª·¢ÈËÔ±ÐèÒª½â¾ö¶ÔÏóºÍ¹ØÏµÖ®¼äµÄ×迹ʧÅäÒ»Ñù£¬ÉèÖÃÃæÏòÎĵµµÄÊý¾Ý´æ´¢µÄ¿ª·¢ÈËÔ±ÐèÒª½â¾ö¶ÔÏóºÍÎĵµÖ®¼äµÄ²îÒì¡£Mongoose£¨ÓÃÓÚ
MongoDB£©µÈ¶ÔÏóÎĵµÓ³Éä (ODM) ¹¤¾ß¿É°ïÖú½â¾öÕâ¸öÎÊÌâ¡£
Äú¿ÉÄÜÏëÖªµÀºÎʱ½«Ê¹ÓöÔÏó·Ö²ãÓ³ÉäÆ÷ (OHM) À´´¦Àí·Ö²ãϵͳ£¬±ÈÈç
XML Êý¾Ý¿â¡£ÒÔ¼°ÔÚ OHM ³öÏÖʱ£¬ÎÒÃÇÊÇ·ñ»áÃæ¶ÔһƬ¿¹ÒéÉù£¿£¨Êǵģ¬ÕâÊdzÌÐòÔ±µÄÓÄĬ¡£¼ÇµÃÒªÏò·þÎñÔ±¸¶Ð¡·ÑŶ£¬»ï¼Æ¡£ÎÒÕûÖܶ¼»áÔÚÕâÀï¡££©
Waterline£ºSails ORM
Sails ³éÏóÊý¾Ý²ãµÄºËÐÄÊÇËüµÄÄÚÖà ORM£¬ÃûΪ Waterline¡£×÷Ϊһ¸öÊý¾Ý·ÃÎʲ㣬Waterline
Ö§³Ö¼¸ºõËùÓÐÊý¾Ý¿â£¬°üÀ¨¹ØÏµºÍ·Ç¹ØÏµ (NoSQL) Êý¾Ý¿â¡£¾¡¹Ü Waterline ¶ÔÈκÎÀàÐÍÊý¾Ý´æ´¢µÄÖ§³ÖÂú×ãÁ˱ÜÃ⹩ӦÉÌËø¶¨µÄËßÇ󣬵«Ò»°ã»¯Ò²Ïû³ýÁËÕë¶ÔÌØ¶¨ÀàÐ͵ÄÊý¾Ý²ã½øÐÐÓÅ»¯µÄ»ú»á¡£
ÐÒÔ˵ÄÊÇ£¬Äú²»ÐèÒª ½áºÏʹÓà Waterline ºÍ Sails¡£ËùÒÔÈç¹ûÄúÈÏΪ
Waterline ²»ÊʺÏÕë¶Ô MongoDB µÄÊý¾Ý½¨Ä££¬ÄÇôÄú¿ÉÒÔÇÄÇÄʹÓà Mongoose¡£È»ºó£¬Äú¿ÉÒÔÖ±½Ó½«
Sails Ó¦ÓóÌÐòÓë MongoDB ºÍ Mongoose °ó¶¨ÔÚÒ»Æð¡£
¿¼Âǵ½ÕâÏîÌáÐÑ£¬ÎÒÃÇÔÝʱ¼ÙÉèÄúÔÚΪһ¸öÒ»°ã»¯µÄÊý¾Ý²ã½¨Ä£¡£
»ùÓÚ´ÅÅ̵ij־ÃÐÔ
ÔÚ¿ª·¢ÖÜÆÚµÄÔçÆÚ£¬Äú»òÐí²»ÏëÌ«¶àµØ¿¼Âdz־ÃÐԲ㣬ÉõÖÁÊÇÏñÄú´Ó MongoDB
»ñµÃµÄÒ»°ã»¯ÇÒËÉÉ¢ÀàÐ͵ij־ÃÐÔ²ãÒ»Ñù¡£ÕâÒâζ×ųýÁ˼á³Ö²ÉÓà Waterline Ö®Í⣬Äú½«Îª Sails
ʹÓÃĬÈϵij־ÃÐԲ㡣ÕâÊÇÒ»¸ö´¿´âµÄ±¾µØÏµÍ³£¬Sails ³ÆÖ®Îª ¡°sails-disk¡± Êý¾Ý¿â£¬Ëü½«¶ÔÏó´æ´¢ÔÚÄÚ´æÖУ¬Ö±µ½¿ÉÒÔ½«ËüÃÇдÈë´ÅÅÌ¡£Êµ¼Ê´æ´¢¸ñʽ·Ç³£¼òµ¥£¬µ«¼¸ºõ²»Ïà¹Ø£¬ÒòΪÄúÖ»Äܽ«ËüÓÃÓÚÉè¼ÆÏîÄ¿ÔÐÍ£¬×ÔÐÐʵÑé»òÔÚÎÄÕÂÖÐÑÝʾ
Sails¡£Ê¹ÓÃĬÈÏϵͳΪÄúÌṩÁËÒÔ´´ÔìÐԵķ½Ê½Ë¼¿¼Ä£Ð͵Ä×îÖÕ״̬µÄ¿Õ¼ä£¬µ«ÓÖ²»»áÈÃÄúÌ«¿ìµØÃÔʧÔÚ¹¹½¨ÕâÖÖ¸´ÔÓ¶«Î÷µÄϸ½ÚÉÏ¡£ÒòΪûÓÐģʽ£¬ËùÒÔÔÚÄú×¼±¸ºÃºóÖ´ÐÐÖØ¹¹½«»á·Ç³£ÈÝÒס£
´´½¨ Sails Ä£Ð͵Ĺý³ÌÊÇÒ»ÖÖÀàËÆ¶ÔÏóµÄÌåÑ飬µ«²»ÊÇÄú¿ÉÄÜÊìϤµÄ¸»ÓòÄ£ÐÍ¡£Sails
Ä£ÐÍȱÉÙ»ùÓÚ¶ÔÏóµÄ±à³ÌµÄһЩ³£¼û¹¦ÄÜ¡£µ«ÊÇ£¬Èç¹ûÄúÁ˽âÆäËû¿ò¼ÜÖеĶÔÏó¹ØÏµÓ³É䣬¾Í¿ÉÄÜ·¢ÏÖ Sails
ÓëÆäÖеÄÌåÑé²î²»¶à¡£ÔÚ¿ªÊ¼½¨Á¢¶ÔÏóÖ®¼äµÄ¹ØÏµÊ±£¬Äú½«ÃæÁÙËüÃÇÖ®¼äµÄȨºâ¡£¾ÍÏÖÔÚ¶øÑÔ£¬ÎÒÃÇÊ×ÏȻᶨÒåһЩ»ù±¾µÄÊý¾ÝÀàÐÍ¡£
½¨Ä£Ò»¸ö²©¿ÍÌõÄ¿
»¨µãʱ¼äÏëÏëÄúÏ£ÍûÔÚ²©¿ÍÌõÄ¿Öп´µ½ÄÄЩ¹¦ÄÜ¡£Äú²»ÐèÒªÁ¢¼´¹æ»®ºÍʵÏÖÿ¸ö×é¼þ£¬µ«ÔÚ¿ªÊ¼±àÂëÖ®Ç°ÖÆ¶¨Ò»¸ö»ù±¾¼Æ»®ÊÇÒ»¸ö²»´íµÄÏë·¨¡£×÷Ϊһ¸öÄ£ÐÍ£¬BlogEntry
ÖÁÉÙÐèÒªÒ»¸ö±êÌâºÍÕýÎÄ¡£ÒòΪÈËÃǾ³£±à¼ºÍ¼ìË÷²©¿ÍÌõÄ¿£¬ËùÒÔÒ»¸ö²»´íµÄÏë·¨ÊÇÌí¼ÓÒ»¸ö created ×Ö¶ÎÀ´±íʾÊ״δ´½¨¸ÃÌõÄ¿µÄʱ¼ä£¬Ìí¼ÓÒ»¸ö
updated ×Ö¶ÎÀ´±íʾ×îºó±à¼Ê±¼ä¡£
Äú½«ÔÚÒÔºóÌí¼Ó tags ºÍ author µÈÆäËû×ֶΡ£ÎÒÃÇÏÖÔÚÊ×ÏÈÀ´²é¿´Ç°
4 ¸ö×ֶΡ£
Sails£ºÉú³É£¡
ÄúÒÑÑ¡¶¨ÁËÒ»¸ö»ù±¾Ä£Ê½²¢¾ö¶¨Èà Sails ½«Ä£ÐÍ´æ´¢µ½´ÅÅÌÖС£½ÓÏÂÀ´£¬Äú½«¸æËß
Sails Éú³ÉÄúµÄÊý¾ÝÄ£Ðͺ͹ØÁªµÄ¿ØÖÆÆ÷µÄ½ÅÊּܡ£Ê×Ïȵ÷ÓÃÃüÁî sails generate api
BlogEntry¡£¸ÃÃüÁ´´½¨Á½¸öÎļþ£ºBlogEntry.js£¨¿ÉÔÚ /api/models Ŀ¼ÖÐÕÒµ½£©ºÍ
BlogEntryController.js£¨ÔÚ /api/controllers Ŀ¼ÖУ©¡£
ÎÒÃǽ« BlogEntryController Áôµ½ÒÔºóÌÖÂÛ¡£ÏÖÔÚÀ´¿´¿´
BlogEntry Ä£ÐÍ£º Çåµ¥ 1. Ò»¸ö¿ÕÄ£ÐÍ
/** * BlogEntry.js * * @description :: TODO: ... * @docs :: http://sailsjs.org/#!documentation/models */
module.exports = {
attributes: {
}
}; |
¸ÃÄ£ÐÍÏÔÈ»ÐèҪһЩÊôÐÔ¡£Ê¹ÓÃÄúµÄĬÈÏ sails-disk Êý¾Ý¿â£¬Ê×Ïȶ¨Òå BlogEntry ÀàÐÍ¡£Çë×¢Ò⣬ÄúûÓÐÌí¼Ó created ºÍ updated
ÊôÐÔ£¬ÒòΪ Sails »á×Ô¶¯Ìí¼ÓËüÃÇ£º
Çåµ¥ 2. ½«×Ö¶ÎÌí¼Óµ½Ä£ÐÍÖÐ
/** * BlogEntry.js * * @description :: A blog entry stored in the CMS. * @docs :: http://sailsjs.org/#!documentation/models */
module.exports = {
attributes: {
title: {
type: 'string'
},
body: {
type: 'string'
}
}
}; |
½ÓÏÂÀ´£¬Sails »á¶¨ÒåÒ»¸ö»ùÓÚ BlogEntry Ä£Ð굀 BlogEntry ÀࣨÈκÎÖÖÀࣻλÓÚËùÓÐ JavaScript ºó£©¡£¸ÃÄ£Ð͵Äÿ¸öʵÀý¶¼½«ÓµÓÐÄúÔÚËüÖ®É϶¨ÒåµÄ³õʼ²©¿ÍÌõÄ¿ÊôÐÔ¡£
½«ÊôÐÔÌí¼Óµ½Ä£ÐÍÖÐ
Sails Ö§³ÖµÄÊôÐÔÔ¶²»Ö¹×Ö·û´®ÀàÐÍ£¬»¹°üÀ¨Ò»Ð©·½±ãµÄ±ê×¼£¬±ÈÈç 'string'¡¢'text'¡¢'integer'¡¢'float'¡¢'date'¡¢'datetime'¡¢'boolean'¡¢'binary'¡¢'array'
ºÍ 'json'¡£ÆäÖÐÐí¶àÊôÐÔÒ²Ö§³ÖÒÀ¾ÝÐèÇóÖ´ÐÐ×Ô¶¨Ò壨ÀýÈçÓÃÓÚÑéÖ¤»òʵÏÖΨһÐÔ£©¡£
ÅöÇÉ£¬Çåµ¥ 2 ÖеÄÄ£ÐÍȱÉÙһЩ¹Ø¼üÄÚÈÝ¡£Èç¹ûÁ½Æª²©¿ÍÎÄÕÂÓµÓÐͬһ¸ö±êÌâ»áÔõÑù£¿ÕâÊÇÒ»¸öÍêÈ«ºÏÀíµÄ¼ÙÉ賡¾°£¬¶øÇÒºÜÈÝÒ×ͨ¹ýÏòÄ£ÐÍÌí¼ÓÖ÷¼ü×Ö¶ÎÀ´¹ÜÀí¡£ÕâÌýÆðÀ´Ïñ
'integer' ÊôÐԵŤ×÷£¬ÈçÏÂËùʾ¡£
Çåµ¥ 3. ½«Ö÷¼üÌí¼Óµ½Ä£ÐÍÖÐ
/** * BlogEntry.js * * @description :: A blog entry stored in the CMS. * @docs :: http://sailsjs.org/#!documentation/models */
module.exports = {
attributes: {
id: {
type: 'integer'
},
// ... the rest
}
}; |
ÕâÊÇ Waterline Ä£Ð͹ÜÀí²»Í¬Êý¾Ý´æ´¢µÄ·½·¨±äµÃÓÐȤµÄµØ·½£¬ÒòΪ Waterline ±ØÐëÄܹ»ÏòÊý¾Ý¿âÃèÊöÊý¾ÝÄ£ÐÍÖеÄÈκÎÊôÐÔ¡£ÀýÈ磬Waterline
ÐèÒªÖªµÀ¸Ã ID ÊÇ·ñ½«ÊÇÖ÷¼ü¡£Èç¹ûËüÊÇ£¨´ó²¿·ÖÇé¿öÏÂÊÇÕâÑù£©£¬Waterline »á½« RDBMS ÖеÄ
id Áбê¼ÇΪ PRIMARY KEY£¬½« MongoDB ÖеÄÒ»¸ö id ÊôÐÔ¸ÄΪ _id£¬µÈµÈ¡£
Sails ÔÊÐíÄúʹÓà JavaScript µÄ¼òµ¥µÄ¶ÔÏóʽÓï·¨À´ÌṩԪÊôÐÔ£¬±ÈÈ磺
Çåµ¥ 4. ½«ÔªÊôÐÔÌí¼Óµ½Ä£ÐÍÖÐ
/** * BlogEntry.js * * @description :: A blog entry stored in the CMS. * @docs :: http://sailsjs.org/#!documentation/models */
module.exports = {
attributes: {
id: {
type: 'integer',
primaryKey: true
},
title: {
type: 'string',
required: true,
defaultsTo: ''
},
body: {
type: 'string',
required: true,
defaultsTo: ''
}
}
}; |
ÕâÊÇÒ»Öַdz£Ö±¹ÛµÄÃèÊö¸ñʽ¡£×ª»»ÎªÈËÀàÓïÑÔºó£¬ÉÏÊö´úÂ뽫ÀàËÆÓÚ£ºid ÊÇÒ»¸öÕûÊýÀàÐ͵ÄÊôÐÔ£¬primaryKey ÔªÊôÐÔ±»ÉèÖÃΪ true¡£
ÒÔÏÂÊÇ Sails ÖÐʹÓõij£¼ûÔªÊôÐԵĿìËٲο¼£º
email ÑéÖ¤Êý¾ÝÔªËØÊÇ·ñÊǵç×ÓÓʼþµØÖ·¡£
Èç¹ûδָ¶¨Öµ£¬defaultsTo »á½«¸ÃÖµÉèÖÃΪ use¡£
autoIncrement Ö»ÄÜÓÃÔÚÕûÊýÊôÐÔÉÏ¡£
unique ÑéÖ¤´ËÊôÐÔÊÇ·ñÔÚËùÓÐʵÀýÉÏÊÇΨһµÄ¡£
primaryKey ±íÃ÷¸ÃÊôÐÔ½«ÓÃ×÷Ä£Ð͵ÄÖ÷¼ü¡£
enum ±íÃ÷Õâ¸öÔªÊôÐÔµÄÖµÊÇÖ»½ÓÊܸø¶¨ÊôÐÔµÄÖµµÄÊý×é¡£ËùÒÔ enum:['Fred', 'Barney',
'Wilma', 'Betty'] ±íʾ½ö½ÓÊÜÕâ 4 ¸öÖµ¡£
size ½«»áÉèÖô«µÝ¸øÊý¾Ý¿âµÄ´óСÏÞÖÆ£¬Í¨³£ÊÇ×Ö·û´®³¤¶ÈÏÞÖÆ¡£
ÉÏÃæµÄ¼òµ¥Ä£ÐͶԻù±¾µÄ²©¿ÍÒýÇæÒÑ×ã¹»ÁË¡£±£´æÄúµÄ BlogEntry.js Îļþ£¬È»ºóÖ´ÐÐ sails
lift ÔÚ±¾µØÔËÐÐËü¡£ÑÏËàµØ½²£¬ÇëÍê³ÉÕâÒ»²½ºóÔÙǰ½øµ½ÏÂÒ»²½¡£
ÖÐÖ¹¡¢ÖØÊԺͺöÂÔ
·¢³öÕâ¸ö sails-lift ºó£¬Äú»òÐíÓеãÕ𾪡£Sails ûÓа²¾²Óä¿ìµØ¼ÌÐøÖ´ÐУ¬Ëü»áÁ¢¿Ì½«ÒÔÏÂÐÅÏ¢·¢Ë͵½ÄúµÄ¿ØÖÆÌ¨£º
Çåµ¥ 5. safe/alter/drop?
Excuse my interruption, but it looks like this app does not have a project-wide "migrate" setting configured yet. (perhaps this is the first time you're lifting it with models?) In short, this setting controls whether/how Sails will attempt to automatically rebuild the tables/collections/sets/etc. in your database schema. You can read more about the "migrate" setting here: http://sailsjs.org/#/documentation/concepts/ORM/model-settings.html?q=migrate
In a production environment (NODE_ENV==="production")
Sails always uses
migrate:"safe" to protect inadvertent
deletion of your data.
However during development, you have a few other
options for convenience:
1. safe - never auto-migrate my database(s).
I will do it myself (by hand)
2. alter - auto-migrate, but attempt to keep my
existing data (experimental)
3. drop - wipe/drop ALL my data and rebuild models
every time I lift Sails
What would you like Sails to do? |
ÏÖÔÚ£¬Äú¿ÉÄÜ×¢Òâµ½µÄµÚÒ»¼þÊÂÊÇ£¬Sails µÄ´íÎóÏûÏ¢ÊÇ×îÈÝÒ×Àí½âµÄ¡£Õâ²»ÊÇΨһµÄ·½Ê½£ºSails »¹»áÉú³ÉÆäËûÄÑÒÔÔĶÁµÄ´íÎóÏûÏ¢£¬ÓÈÆäÔÚÓëÎÒÃÇÔÚһЩ±à³ÌÓïÑÔÖлñµÃµÄ´íÎóÏà±Èʱ¡£
ÒòΪÄúÊÇÏòÐ嵀 BlogEntry ·¢³öµÄµÚÒ»¸ö sails lift ÇëÇó£¬ËùÒÔ Sails »áÎÊ£ºÎÒÓ¦¸ÃÈçºÎ´¦Àí½«ÓÃÀ´´æ´¢´ËÄ£Ð͵ĵײãÊý¾Ý¿âϵͳµÄģʽ£¨Èç¹ûÓУ©£¿
¶ÔÓÚÐí¶à¿ª·¢ÈËÔ±£¬»¹»áÍ£ÏÂÀ´Ë¼¿¼ÒÔÏÂÎÊÌ⣺ÆäËû ORM ϵͳÓÐһЩҪÇóÄúÊÖ¶¯±à¼ºÍ¹ÜÀíÊý¾Ý¿âģʽµÄ»ù±¾ÐÐΪ£¬¶ø
Sails Ï£Íû´ú±íÄú¹ÜÀíÕâЩÈÎÎñ¡£ÓÉÓÚ Sails ÎÞ·¨¶Ô ¡°¾É¡± ģʽºÍ ¡°Ð¡± ģʽִÐÐÈκÎÀàÐ͵ÄÓïÒå±È½Ï£¬¶øÇÒÔÚÄúÄܽøÐжà´ó³Ì¶ÈµÄÖØ¹¹²Å²»»áÈÃ
Sails ÎÞ·¨Àí½âÓïÒå·½Ãæ£¬¿ÉÄÜÓÐЩÏÞÖÆ£¬ËùÒÔÑ¡ÏîÓеãÉÙ¡£½«ÕâÖÖÄ£Ê½Ç¨ÒÆºÏ²¢µ½»·¾³Öзdz£²»´í£¬ÖÁÉÙÔÚËü×è°Äú¹¤×÷»ò·¸´í֮ǰÊÇÕâÑùµÄ¡£ËùÒÔ×îºÃ»¨µãʱ¼äÏëÏëÄúµÄÑ¡Ôñ£¬²¢Ê¼ÖÕÈ·±£±¸·ÝÁËÄúµÄ´úÂëºÍÊý¾Ý¡£
Óë´Ëͬʱ£¬·µ»Øµ½¿ØÖÆÌ¨£¬Sails ҲϣÍûÖªµÀËüÔÚÖØ¹¹Ä£ÐÍʱ¸ÃÈçºÎ×ö£º
safe£º¼ÙÉ迪·¢ÈËÔ±½«¹ÜÀíËùÓÐÄ£Ê½ÖØ¹¹¡£
alter£º¾¡¿ÉÄܵØÔÚ²»¶ªÊ§ÈκÎÊý¾ÝµÄÇé¿öÏÂÐÞ¸ÄÏÖÓÐģʽ£¨Õâ¿Ï¶¨´æÔÚʧ°ÜµÄ·çÏÕ£©¡£
drop£º´ÓÍ·¿ªÊ¼´´½¨ÐÂģʽ¡£ ÔÚ¿ª·¢ÖÜÆÚµÄÔçÆÚ½×¶Î£¬Ã¿´Î¶¼ÖØÐ¹¹½¨Ä£ÐÍÊÇÄúµÄ×î¼Ñ·½·¨£¬ÒòΪÄú½«²»¶Ïµ÷ÕûÄ£ÐÍÀàÐÍ¡£²»ÓÃ˵£¬Äú¾ø²»»áΪÉú²úϵͳѡÔñ´ËÑ¡Ïî¡£ÔÚ½«Ó¦ÓóÌÐò²¿Êðµ½Éú²úÖÐʱ£¬Äú¿ÉÄÜÐèҪѡÔñµÚÒ»¸öÑ¡ÏÒòΪ´ó²¿·Ö×éÖ¯¶¼¶ÔÈκοÉÄÜDZÔڵؽضÏÒ»¸ö±íµÄ²Ù×÷¶¼ºÜÃô¸Ð£¬¸ü±ðÌáÕû¸öÊý¾Ý¿â¡£µ«ÊÇÒòΪÄúÈÔÔÚʵÑ鲢ʹÓÃ
sails-disk ´æ´¢ÏµÍ³£¨ËüûÓÐÈκÎģʽ£©£¬ËùÒÔ¿ÉÒÔËæÒâÑ¡Ôñ ¡°drop¡± ²¢±£³Ö¼òµ¥ÐÔ¡£
×Ô¶¯»¯¹¹½¨ÅäÖõÄʱ»ú
Óò»Á˶à¾Ã£¬Äú¾Í»áÑá¾ëÔÚÿ¸ö sails lift ÉÏÖ´ÐÐ ¡°safe/alter/drop¡± ²éѯ¡£ÔÚ½«Ó¦ÓóÌÐò²¿Êðµ½Éú²úÖкó£¬ÕâЩ²éѯ¾Í»á´Ó·³ÄÕÑݱäΪÃ÷ÏÔµÄΣÏÕ£¨ÏëÏ뽫ӦÓóÌÐò²¿Êðµ½Éú²úÖеÄÈËÑ¡Ôñ
¡°drop¡± Ñ¡Ïîʱ»á·¢Éúʲô£©¡£ÐÒÔ˵ÄÊÇ£¬Äú¿ÉÒÔͨ¹ý±à³Ì·½Ê½Îª Sails ÅäÖÃÄú×îϲ»¶µÄÑ¡Ïî¡£µ«ÔÚÓ¦ÓóÌÐò½øÒ»²½ÍêÉÆºóÕâÑù×ö¿ÉÄܸüÓÐÒâÒå¡£¾Í¸öÈ˶øÑÔ£¬ÎÒ¸üϲ»¶Ñ¯ÎÊ£¬¶ø²»ÊÇÉèÖÃÒ»¸ö¿ÉÄÜijһÌì²úÉúÊÂÓëԸΥµÄ½á¹ûµÄ×Ô¶¯
¡°drop¡±¡£ÎÒ²»Ïë Sails ÔÚÓ¦ÓóÌÐòÖØÐÂÆô¶¯Ê±¶ªÆúÎÒµÄÉú²úÊý¾Ý¡£
Ñ¡Ôñ drop Ñ¡Ïîºó£¬Äú½«ÔÚ¿ØÖÆÌ¨Öп´µ½ÊìϤµÄ·«´¬Í¼°¸¡£Sails ÔÚÕý³£ÔËÐУ¬ÊÇʱºò¿ªÊ¼½«Êý¾Ý×¢ÈëÄúµÄÄ£ÐÍÁË
¡ª µ«ÊǸÃÈçºÎ²Ù×÷£¿
Blueprints API
Sails Ëæ´øÁËÔ¤¶¨ÒåµÄ HTTP ¶ËµãÀ´Ö§³Ö»ù±¾µÄ CRUD ²Ù×÷£¨GET¡¢POST¡¢PUT ºÍ
DELETE£©¡£Ã¿¸öÑ¡Ïî¶¼Á¬½Óµ½Ò»¸ö´ÓÄúÄ£Ð͵ÄÃû³ÆÉú³ÉµÄ URL ¶Ëµã¡£Òò´Ë£¬¼´Ê¹Ö»ÉèÖÃÁ˲©¿Í API
µÄ¿ò¼Ü£¬Ïò http://localhost:1337/BlogEntry ·¢³ö GET ÇëÇóÒ²»á·µ»ØºÏ·¨µÄ
JSON ÏìÓ¦£¬ÈçÏÂËùʾ£º
ͼ 1. GET /BlogEntry

¸ÃͼÏÔʾÁËÒ»¸ö¿Õ²©¿ÍÌõÄ¿µÄÆÁÄ»½ØÍ¼¡£ ¾¡¹ÜÆÁÄ»½ØÍ¼Êǿյ쬵«ÉÏÃæÏÔʾµÄ JSON Êý×鏿ËßÎÒ Sails
À¶Í¼ÕýÔÚÔËÐС£ÔÚÕâÖÖÇé¿öÏ£¬À¶Í¼ÕýÔÚÔËÐÐΪһ¸ö HTTP GET ¶Ëµã¶¨ÒåµÄ·ÓÉ¡£Ê£Óà CRUD ¶Ëµã²»ÄÑÈ·¶¨£ºPOST
µ½ /BlogEntry£¬Õâ»áʹÓà POST ÕýÎÄ×÷ΪҪ²åÈëµÄÊý¾ÝÀ´´´½¨Ò»¸öÐ嵀 BlogEntry ¶ÔÏó¡£PUT
½«ÐÞ¸ÄÒ»¸öÏÖÓÐµÄ BlogEntry£¬DELETE »áɾ³ýËü¡££¨Çë×¢Ò⣬PUT ºÍ DELETE ¶¼½«ÇжÏÌá½»µÄ
HTTP ÇëÇóÖеÄÖ÷¼üÊôÐÔ¡££©
ÔÚµäÐ굀 Web ¿ª·¢³¡¾°ÖУ¬Õâ¿ÉÄÜÊÇÄú¿ªÊ¼±àд curl ÃüÁîÐнű¾µÄʱ¿Ì£¬ÒòΪä¯ÀÀÆ÷ĬÈÏÇé¿öϲ»»áÖ´ÐÐ
PUT »ò DELETE ²Ù×÷£¬¶øÊÇÐèÒªÒ»¸ö HTML ±íµ¥À´Æô¶¯ POST ÇëÇ󡣸òÙ×÷·Ç³£µ¥µ÷ºÍÎÞÁÄ£¬¶øÇÒ£¨¶Ô
Sails ¿ª·¢ÈËÔ±¶øÑÔ£©ÍêȫûÓбØÒª¡£³ýÁË»ù±¾µÄ 4 ¸ö HTTP ¶ËµãÖ®Í⣬µÃÒæÓÚ Sails ¿ªÏä¼´ÓõØÉèÖõÄÀ¶Í¼Ä¬ÈÏÉèÖã¬Äú»¹¿ÉÒÔʹÓÃһЩ
¡°¿ì½Ý¡± ·ÓÉʹÓÃÀ´×Ôä¯ÀÀÆ÷µÄ GET ÇëÇ󽫼Ǽ·ÅÈëϵͳÖС£¾Ù¸öÇ¡µ±µÄÀý×Ó£¬Èç¹ûÄúÔÚä¯ÀÀÆ÷ÖзÃÎÊ£º
/BlogEntry/create?title=%27Fred%27&body=%27Hello world%27&id=1", |
Sails ½«Ê¹ÓÃÒÔÏÂÐÅÏ¢×÷ΪÏìÓ¦£º
ͼ 2. Ò»¸ö°üº¬Ò»Ð©Êý¾Ý²ÎÊýµÄ CREATE

¸ÃͼÏÔʾÁË¿ØÖÆÌ¨ÖÐÏÔʾµÄ CREATE ½á¹û¡£ ºÁÎÞÒÉÎÊ£¬Èç¹ûÄú·µ»Ø²¢Ôٴη¢³ö GET /BlogEntry
ÇëÇó£¬Ôò»áÏÔʾһ¸öʵÀý¡£ÏÖÔÚÄú¿ÉÄÜ×¢Òâµ½£¬´ËÉèÖò»Ì«Ïñ REST ·ç¸ñ£¬ÒòΪËüʹÓà GET ¶¯´ÊÀ´Ö´ÐÐÐÞ¸ÄÊý¾Ý¿âµÄ²Ù×÷¡£¾¡¹ÜÃ÷ÏÔÎ¥±³
REST ϵͳµÄ¹æÔò£¬µ«Ôڴ˿̣¬ËüÊÇ¿ª·¢ÖÜÆÚÖÐÖµµÃÓµÓеÄÒ»¸ö²»´íÑ¡Ïî¡£
¶øÇÒÔÚ½«ÏµÍ³²¿ÊðÉú²úÖÐ֮ǰ£¬ÄúÓ¦¸Ã¹Ø±Õ´ËʵÀýºÍËùÓÐÆäËû×Ô¶¯Éú³ÉµÄ·ÓÉ¡£Ê×ÏÈ£¬ÓµÓÐÁ½ÖÖ½«Êý¾Ý²åÈëϵͳÖеĿÉÄÜ·½Ê½»áµ¼Ö´úÂëÖØ¸´£¨ÓÐÁ½¸ö±ØÐë´´½¨µÄ¶Ëµã£¬ÀýÈ磬Èç¹ûÄú¶ÔË¿ÉÒÔ½«Ð²©¿ÍÌõÄ¿·ÅÈëÊý¾Ý¿âÖнøÐÐÏÞÖÆ£©¡£Æä´Î£¬ÓµÓÐÖ´ÐÐͬһÖÖ²Ù×÷µÄ¶àÖÖ·½·¨¿ÉÄÜ»áÈý«¼Ì³ÐÄúµÄϵͳµÄ¿ª·¢ÈËÔ±»ìÏý¡£ºÜºÃµØÀí½âÕâЩÑÝʾºÍÔçÆÚÔÐÍÉè¼Æ£¬Ò»µ©¾¹ýÁËÔçÆÚ½×¶Î£¬ËüÃǾÍûÄÇôÓÐÓÃÁË¡£
ÈçºÎ´¦Àí·ÇΨһÖ÷¼ü£¿
Èç¹ûʵÑé /create Ñ¡ÏÄúºÜ¿ì¾Í»á·¢ÏÖ£¨ÓëËùÓкÏÀíµÄÊý¾Ý¿â¶¨ÒåÏà·´£©Ö÷¼üµÄ id ×Ö¶Îʵ¼ÊÉϲ»ÊÇΨһµÄ¡£¿ÉÒÔÔËÐÐͬһ¸öÇëÇó¶à´Î£¬×îÖÕÔÚϵͳÖеõ½¶à¸ö
BlogEntry ʵÀý£¬Ã¿¸öʵÀý¶¼ÓµÓÐÒ»¸öֵΪ 1 µÄ id ×ֶΡ£ÕâÊÇÒòΪ sails-disk ÊÊÅäÆ÷²»ÊǽöΪ¿ª·¢ÓÃ;¶øÉè¼ÆµÄ¡£sails-disk
ÊÊÅäÆ÷ʵÏÖÖÐȱÉÙͨ³£°üº¬ÔÚÊý¾Ý¿âÖеÄÐí¶à¹¦ÄÜ£º¸Ã¹¦ÄÜÖ»ÊÇÆäÖÐÖ®Ò»¡£
À¶Í¼Â·ÓÉ
ÍêÕûµÄ Blueprints API Îĵµ Ïêϸ½éÉÜÁËΪ Sails ÅäÖõÄËùÓÐÀ¶Í¼Â·ÓÉ¡£³ýÁËÖ´Ðд´½¨/²åÈëµÄ¿ì½Ý·ÓÉ£¨ÄúÒÑÔÚÉÏÎÄ¿´µ½£©Ö®Í⣬»¹ÓÐÁ½¸ö×Ô¶¯Éú³ÉµÄÀ¶Í¼Â·ÓÉÒ²ÖµµÃÌÖÂÛ£º
PUT /:model/:record ÊǶԼǼִÐиüеÄĬÈÏ·ÓÉ¡£
GET /:model/:record/update ÔÊÐíÄú½«Òª¸üеÄÊôÐÔÖ¸¶¨Îª²éѯ²ÎÊý¶Ô£¬±ÈÈ磺GET
/BlogEntry/1/update/title=New%20Title¡£
Äú¿ÉÒÔÖ¸¶¨ PUT ÇëÇó»ò GET ¡°¿ì½Ý¡± ÇëÇóÉϵIJÎÊý£¬µ«Í¬ÑùµØ£¬Ó¦¸ÃΪÁËÉú²úÓÃ;¶ø¹Ø±Õ¸Ã¿ì½Ý·ÓÉ¡£
GET /:model ÓÐÐí¶à²ÎÊý¿É×÷Ϊ²éѯ²ÎÊý´«µÝ¸ø GET ÇëÇó¡£ÀýÈ磬limit ¿ÉÓÃÓÚÉèÖÃÓ¦·µ»ØµÄ×î´óÌõÄ¿Êý£¬skip
¿ÉÓÃÓÚ±íÃ÷ÔÚ·µ»ØÖ®Ç°Ìø¹ýÁ˶àÉÙ¸öÌõÄ¿¡£Ò»ÆðʹÓÃÕâÁ½¸ö²ÎÊý¿ÉΪ´óÐͼǼ¼¯Ìṩ¼òµ¥µÄ·ÖÒ³Ö§³Ö£ºµ±Óû§ÔÚÒÔ 50
¸ö¼Ç¼»®·ÖµÄ¼Ç¼¿éÖÐÒÆ¶¯Ê±£¬Ã¿Òƶ¯Ò»´Î¾Í»áÖ´ÐÐÒ»´Î limit=50£¬ skip 0, 50, 100,
150£¬ÒÀ´ËÀàÍÆ¡£
GET À¶Í¼Â·ÓÉÒ²Ö§³Ö sort£¬ÕâÔÊÐíÄúÖ¸¶¨Ä³¸öÒªÅÅÐòµÄÊôÐÔ£¬ÒÔ¼°¸ÃÊôÐÔÓ¦°´ÉýÐò (ASC) »¹ÊǽµÐò
(DESC) ½øÐÐÅÅÐò¡££¨Ò»¶¨ÒªÈ·±£ÔÚÊôÐÔÃûºÍ˳ÐòÖ®¼ä·ÅÈëÁËÒ»¸ö¿Õ¸ñ£¬¾ÍÏñÕâÑù£º?sort=lastName$20ASC¡££©
ÁíÒ»¸öÊÜÖ§³ÖµÄ²ÎÊýÊÇ where£¬Ëü½«½ÓÊÜÒ»¸ö JSON ·ç¸ñµÄÀàËÆ MongoDB µÄν´Ê£¬±ÈÈç
?where={"name":{"contains":"theodore"}}£¨ÕâÊÇÒ»¸ö
Waterline WHERE Ìõ¼þ¶ÔÏó£¬Waterline ½«Õë¶Ô¹ØÏµÊý¾Ý¿âÊÊÅäÆ÷¶ø½«Ëüµ÷ÕûΪ SQL¡££©
Èç¹ûÒªËÑË÷µÄÊôÐÔÓÐÒ»¸öÌØ¶¨µÄÖµ£¨ÎÞ´¦²»ÔÚµÄ SELECT * FROM persons WHERE lastName='Flintstone'
²éѯ£©£¬¸Ã·ÓÉ»áÖ±½Ó½ÓÊÜËü×÷Ϊ²éѯ²ÎÊý£¬±ÈÈ磺GET /BlogEntry?title=Greetings%20everybody¡£
¿¼Âǵ½ÄúĿǰ½ö±àдÁËÊ®¼¸ÐдúÂ룬ÕâÊÇÒ»×é²»´íµÄ¹¦ÄÜ¡£
½áÊøÓï
¹ØÓÚÔÚ Sails.js Öн¨Ä££¬»¹ÓÐÐí¶à֪ʶÐèҪѧϰ£¬µ«ÏÖÔÚ£¬ÒѾÓÐ×ã¹»µÄÐÂÁìÓò¹©Äú̽Ë÷¡£ÔÚÏÂһƪ½Ì³ÌÖУ¬½«½øÒ»²½Á˽âÄ£ÐͺÍËüÃÇÖ®¼äµÄ¹ØÏµ£»Ò²¾ÍÊÇ˵£¬½«Á˽âÐí¶àÊý¾ÝϵͳÖдæÔڵľµäµÄ
¡°1¶Ô1¡±¡¢¡°1¶Ô¶à¡± ºÍ ¡°¶à¶Ô¶à¡± ¹ØÏµ¡£½¨Ä£¹ØÏµ»áʹÄúÄܹ»À©Õ¹²©¿Í API À´½ÓÊÜÆÀÂÛµÈÐÅÏ¢¡£µ«ÏÖÔÚ£¬ÊÇʱºòÔÝÍ£Ò»ÏÂÁË¡£¶ÔÓڸÿò¼ÜµÄÃû³Æ£¬ÎÒÃDz»Ïë˵
¡°ÔÙ¼û¡±£¬ËµÒ»Â·Æ½°² Ò²Ðí»á¸üºÏÊÊһЩ¡£
|