Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÃæÏò JavaScript ¿ª·¢ÈËÔ±µÄ Sails.js Ö¸ÄÏ:Ä£ÐͺÍÀ¶Í¼
 
À´Ô´£ºInfoQ ·¢²¼ÓÚ 2016-11-8
  3632  次浏览      28
 

ÔÚ 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»Ïë˵ ¡°ÔÙ¼û¡±£¬ËµÒ»Â·Æ½°² Ò²Ðí»á¸üºÏÊÊһЩ¡£

   
3632 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕ Ïà¹ØÎĵµ Ïà¹Ø¿Î³Ì



Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

AndroidÊÖ»ú¿ª·¢£¨Ò»£©
Àí½âJavascript
·ÇµäÐÍajaxʵ¼ù
³¹µ×µÄAjax
javascript ʹÓÃCookies
ʹÓà jQuery ¼ò»¯ Ajax ¿ª·¢

Struts+Spring+Hibernate
»ùÓÚJ2EEµÄWeb 2.0Ó¦Óÿª·¢
J2EEÉè¼ÆÄ£Ê½ºÍÐÔÄܵ÷ÓÅ
Java EE 5ÆóÒµ¼¶¼Ü¹¹Éè¼Æ
Javaµ¥Ôª²âÊÔ·½·¨Óë¼¼Êõ
Java±à³Ì·½·¨Óë¼¼Êõ

ijº½¿Õ¹«Ë¾IT²¿ JavaScriptʵ¼ù
ijµçÊÓÈí¼þ HTML5ºÍJavaScript
Öк½ÐÅ JavaScript¸ß¼¶Ó¦Óÿª·¢
´óÇìÓÍÌï web½çÃæAjax¿ª·¢¼¼Êõ
ºÍÀûʱ ʹÓÃAJAX½øÐÐWEBÓ¦Óÿª·¢