{"id":31912,"date":"2023-06-26T15:31:08","date_gmt":"2023-11-02T04:16:39","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e9%80%89%e6%8b%a9firebase%e6%9d%a5%e6%89%98%e7%ae%a1nodejs%e5%ba%94%e7%94%a8%e7%9a%84%e6%95%85%e4%ba%8b%e3%80%82\/"},"modified":"2024-04-30T10:48:42","modified_gmt":"2024-04-30T02:48:42","slug":"%e6%88%91%e9%80%89%e6%8b%a9firebase%e6%9d%a5%e6%89%98%e7%ae%a1nodejs%e5%ba%94%e7%94%a8%e7%9a%84%e6%95%85%e4%ba%8b%e3%80%82","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e9%80%89%e6%8b%a9firebase%e6%9d%a5%e6%89%98%e7%ae%a1nodejs%e5%ba%94%e7%94%a8%e7%9a%84%e6%95%85%e4%ba%8b%e3%80%82\/","title":{"rendered":"\u6211\u9009\u62e9Firebase\u6765\u6258\u7ba1Nodejs\u5e94\u7528\u7684\u6545\u4e8b"},"content":{"rendered":"<p>\u6211\u4e4b\u524d\u5e76\u4e0d\u5b8c\u5168\u4e86\u89e3Firebase\uff0c\u4f46\u5728\u4e0a\u4e00\u7bc7\u6587\u7ae0\u4e2d\u4f7f\u7528\u4e86Google Cloud Functions\u540e\uff0c\u6211\u51b3\u5b9a\u5c1d\u8bd5\u65b0\u5efa\u4e00\u4e2aFirebase\u9879\u76ee\u3002<\/p>\n<p>\u6211\u6240\u505a\u7684\u662f\u4e0e\u4ee5\u4e0b\u7f51\u7ad9\u76f8\u540c\u7684\u6b65\u9aa4\uff0c\u4f46\u4e3a\u4e86\u5b66\u4e60\u7684\u76ee\u7684\uff0c\u5728\u8fd9\u7bc7\u6587\u7ae0\u4e2d\u6211\u5c06\u6284\u5199\u4e0b\u6765\u3002<\/p>\n<p>\u7528 Node.js \u5728 Firebase \u4e0a\u6258\u7ba1\u5e94\u7528\u7a0b\u5e8f\u7684\u6700\u77ed\u8def\u5f84 &#8211; Qiita<\/p>\n<p>\u9996\u5148\uff0c\u60a8\u9700\u8981\u5b89\u88c5\u9002\u7528\u4e8eNode.js\u7684Firebase\u5de5\u5177\u3002<\/p>\n<pre class=\"post-pre\"><code>C:\\&gt;npm install -g firebase-tools\r\n<\/code><\/pre>\n<p>\u901a\u8fc7Firebase\u5de5\u5177\uff0c\u767b\u5f55\u5230Google Cloud Functions\u4e0a\u7684Firebase\u3002\u6267\u884c\u547d\u4ee4\u540e\uff0c\u5728GUI\u4e2d\u4f1a\u51fa\u73b0\u767b\u5f55\u754c\u9762\uff0c\u8bf7\u8f93\u5165ID\/\u5bc6\u7801<\/p>\n<pre class=\"post-pre\"><code>C:&gt;\\firebase login\r\n? Allow Firebase to collect anonymous CLI usage and error reporting information? Yes\r\n<\/code><\/pre>\n<p>\u5728\u672c\u5730\u4e0a\u521b\u5efa\u4e00\u4e2aFirebase\u9879\u76ee\u3002\u6267\u884cfirebase init\u547d\u4ee4\u540e\uff0c\u9010\u6b65\u56de\u7b54\u5404\u79cd\u95ee\u9898\u3002\u987a\u4fbf\u63d0\u4e00\u4e0b\uff0c\u5728\u8fd9\u4e2a\u8fc7\u7a0b\u4e2d\uff0c\u4f60\u9700\u8981\u6307\u5b9a\u4e00\u4e2a\u4e91\u4e0a\u7684Firebase\u9879\u76ee\uff0c\u6240\u4ee5\u6700\u597d\u63d0\u524d\u521b\u5efa\u597d\u3002\u5728\u8fd9\u91cc\uff0c\u6211\u6307\u5b9a\u4e86&#8221;myfirstfirebaseproject-a6cdc&#8221;\u3002<\/p>\n<pre class=\"post-pre\"><code>C:\\first_firebase&gt;firebase init\r\n\r\n     ######## #### ########  ######## ########     ###     ######  ########\r\n     ##        ##  ##     ## ##       ##     ##  ##   ##  ##       ##\r\n     ######    ##  ########  ######   ########  #########  ######  ######\r\n     ##        ##  ##    ##  ##       ##     ## ##     ##       ## ##\r\n     ##       #### ##     ## ######## ########  ##     ##  ######  ########\r\n\r\nYou're about to initialize a Firebase project in this directory:\r\n\r\n  C:\\first_firebase\r\n\r\n? Are you ready to proceed? Yes\r\n? Which Firebase CLI features do you want to set up for this folder? Press Space to select features, then Enter to confirm your choices. Functions: Configure and deploy Cloud Functions, Hosting: Configure and deploy Firebase Hosting sites\r\n\r\n=== Project Setup\r\n\r\nFirst, let's associate this project directory with a Firebase project.\r\nYou can create multiple project aliases by running firebase use --add,\r\nbut for now we'll just set up a default project.\r\n\r\n? Select a default Firebase project for this directory: myfirstfirebaseproject-a6cdc (MyFirstFirebaseProject)\r\ni  Using project myfirstfirebaseproject-a6cdc (MyFirstFirebaseProject)\r\n\r\n=== Functions Setup\r\n\r\nA functions directory will be created in your project with a Node.js\r\npackage pre-configured. Functions can be deployed with firebase deploy.\r\n\r\n? What language would you like to use to write Cloud Functions? JavaScript\r\n? Do you want to use ESLint to catch probable bugs and enforce style? No\r\n+  Wrote functions\/package.json\r\n+  Wrote functions\/index.js\r\n+  Wrote functions\/.gitignore\r\n? Do you want to install dependencies with npm now? Yes\r\n\r\n&gt; protobufjs@6.8.8 postinstall C:\\first_firebase\\functions\\node_modules\\protobufjs\r\n&gt; node scripts\/postinstall\r\n\r\nnpm notice created a lockfile as package-lock.json. You should commit this file.\r\nadded 249 packages from 199 contributors and audited 700 packages in 75.543s\r\nfound 0 vulnerabilities\r\n\r\n\r\n=== Hosting Setup\r\n\r\nYour public directory is the folder (relative to your project directory) that\r\nwill contain Hosting assets to be uploaded with firebase deploy. If you\r\nhave a build process for your assets, use your build's output directory.\r\n\r\n? What do you want to use as your public directory? public\r\n? Configure as a single-page app (rewrite all urls to \/index.html)? No\r\n+  Wrote public\/404.html\r\n+  Wrote public\/index.html\r\n\r\ni  Writing configuration info to firebase.json...\r\ni  Writing project information to .firebaserc...\r\ni  Writing gitignore file to .gitignore...\r\n\r\n+  Firebase initialization complete!\r\n<\/code><\/pre>\n<p>\u5982\u679c\u90e8\u7f72\u6210\u529f\uff0c\u9879\u76ee\u5c06\u5728 Web \u4e0a\u5f97\u5230\u5c55\u793a\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u9759\u7684\u30b3\u30f3\u30c6\u30f3\u30c4\u306f\u3000https:\/\/\uff1cFirebase \u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\uff1e.firebaseapp.com<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u52d5\u7684\u30b3\u30f3\u30c6\u30f3\u30c4\u306f\u3000https:\/\/us-central1-\uff1cFirebase \u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\uff1e.cloudfunctions.net\/helloWorld<\/ul>\n<p>\u53ef\u4ee5\u786e\u8ba4\u3002<\/p>\n<p>\u9759\u6001\u5185\u5bb9\u663e\u793a\u7684\u662f\u672c\u5730public\/index.html\u6587\u4ef6\u7684\u5185\u5bb9\uff0c\u52a8\u6001\u5185\u5bb9\u663e\u793a\u7684\u662f\u672c\u5730functions\/index.js\u6587\u4ef6\u7684\u5185\u5bb9\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0cindex.js\u6587\u4ef6\u7684\u5185\u5bb9\u90fd\u88ab\u6ce8\u91ca\u6389\u4e86\uff0c\u6240\u4ee5\u9700\u8981\u53d6\u6d88\u6ce8\u91ca\u5e76\u8fdb\u884c\u90e8\u7f72\u624d\u80fd\u8fdb\u884c\u663e\u793a\u786e\u8ba4\u3002<\/p>\n<pre class=\"post-pre\"><code>C:\\first_firebase&gt;firebase deploy\r\n\r\n=== Deploying to 'myfirstfirebaseproject-a6cdc'...\r\n\r\ni  deploying functions, hosting\r\ni  functions: ensuring necessary APIs are enabled...\r\n+  functions: all necessary APIs are enabled\r\ni  functions: preparing functions directory for uploading...\r\ni  functions: packaged functions (25.67 KB) for uploading\r\n+  functions: functions folder uploaded successfully\r\ni  hosting[myfirstfirebaseproject-a6cdc]: beginning deploy...\r\ni  hosting[myfirstfirebaseproject-a6cdc]: found 2 files in public\r\n+  hosting[myfirstfirebaseproject-a6cdc]: file upload complete\r\ni  functions: creating Node.js 8 function helloWorld(us-central1)...\r\n+  functions[helloWorld(us-central1)]: Successful create operation.\r\nFunction URL (helloWorld): https:\/\/us-central1-myfirstfirebaseproject-a6cdc.cloudfunctions.net\/helloWorld\r\ni  hosting[myfirstfirebaseproject-a6cdc]: finalizing version...\r\n+  hosting[myfirstfirebaseproject-a6cdc]: version finalized\r\ni  hosting[myfirstfirebaseproject-a6cdc]: releasing new version...\r\n+  hosting[myfirstfirebaseproject-a6cdc]: release complete\r\n\r\n+  Deploy complete!\r\n\r\nProject Console: https:\/\/console.firebase.google.com\/project\/myfirstfirebaseproject-a6cdc\/overview\r\nHosting URL: https:\/\/myfirstfirebaseproject-a6cdc.firebaseapp.com\r\n<\/code><\/pre>\n<p>\u5982\u679c\u5728\u90e8\u7f72\u4e4b\u524d\u60f3\u8981\u5728\u672c\u5730\u8fdb\u884c\u786e\u8ba4\uff0c\u53ef\u4ee5\u542f\u52a8\u5305\u542b\u5728Firebase\u4e2d\u7684\u670d\u52a1\u5668\uff0c\u5e76\u53ef\u4ee5\u4ece\u672c\u5730\u8fdb\u884c\u786e\u8ba4\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u9759\u7684\u30b3\u30f3\u30c6\u30f3\u30c4\u306f http:\/\/localhost:5000<\/ul>\n<\/li>\n<\/ul>\n<p>\u52d5\u7684\u30b3\u30f3\u30c6\u30f3\u30c4\u306f http:\/\/localhost:5001\/\uff1cFirebase \u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\uff1e\/us-central1\/helloWorld<\/p>\n<pre class=\"post-pre\"><code>C:\\first_firebase&gt;firebase serve\r\n\r\n=== Serving from 'C:\\first_firebase'...\r\n\r\n+  functions: Using node@8 from host.\r\ni  hosting: Serving hosting files from: public\r\n+  hosting: Local server: http:\/\/localhost:5000\r\n127.0.0.1 - - [15\/Jul\/2019:07:03:39 +0000] \"GET \/ HTTP\/1.1\" 200 3505 \"-\" \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/75.0.3770.100 Safari\/537.36\"\r\n+  functions: Emulator started at http:\/\/localhost:5001\r\ni  functions: Watching \"C:\\first_firebase\\functions\" for Cloud Functions...\r\n127.0.0.1 - - [15\/Jul\/2019:07:03:39 +0000] \"GET \/__\/firebase\/init.js HTTP\/1.1\" 200 - \"http:\/\/localhost:5000\/\" \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/75.0.3770.100 Safari\/537.36\"\r\ni  functions: HTTP trigger initialized at http:\/\/localhost:5001\/myfirstfirebaseproject-a6cdc\/us-central1\/helloWorld\r\n&gt;  (node:8936) ExperimentalWarning: The http2 module is an experimental API.\r\ni  functions: Beginning execution of \"helloWorld\"\r\n<\/code><\/pre>\n<h2>\u5fc3\u60c5<\/h2>\n<p>\u53ea\u9700\u4e00\u4e2a\u9009\u9879\uff0c\u4ee5\u4e2d\u56fd\u5f0f\u7684\u65b9\u5f0f\u91ca\u4e49\uff1a\u901a\u8fc7 GUI \u548c CUI \u8fdb\u884c\u70b9\u51fb\uff0c\u5b8c\u6210\u90e8\u7f72\uff0c\u6240\u4ee5\u867d\u7136\u6ca1\u6709\u592a\u591a\u7684\u5b66\u4e60\u611f\u53d7\uff0c\u4f46\u80fd\u591f\u8f7b\u677e\u5730\u53d1\u5e03\u4e00\u4e2aWeb\u670d\u52a1\u5e76\u4e14\u611f\u89c9\u5f88\u8f7b\u677e\u3002<\/p>\n<p>\u6211\u89c9\u5f97\u5728firebase serve\u4e0a\u53ef\u4ee5\u5f88\u8f7b\u677e\u5730\u8fdb\u884c\u672c\u5730\u8c03\u8bd5\uff0c\u8fd9\u70b9\u7279\u522b\u65b9\u4fbf\u3002\u867d\u7136\u5176\u4ed6WebApp PaaS\u53ef\u80fd\u4e5f\u662f\u8fd9\u6837\uff0c\u4f46firebase\u5168\u90e8\u6253\u5305\u5230\u4e00\u4e2a\u540e\u7aef\u670d\u52a1\u4e2d\uff0c\u6240\u4ee5\u5e94\u8be5\u6bd4\u5176\u4ed6WebApp\u6216\u6570\u636e\u5e93\u7ed3\u5408\u7684\u8fd0\u8425\u65b9\u5f0f\u5c11\u9047\u5230\u95ee\u9898\uff0c\u611f\u89c9\u4f1a\u66f4\u8f7b\u677e\u4e00\u4e9b\uff0c\u5bf9\u6b64\u6211\u5f88\u671f\u5f85\u3002<\/p>\n<h2>\u7eaf\u7cb9\u662f\u9644\u5e26\u7684\u8bdd\u9898<\/h2>\n<p>\u672a\u6765\u7684\u5b66\u4e60\u8ba1\u5212\u3002<\/p>\n<p>\u6211\u7684\u6700\u7ec8\u76ee\u6807\u662f\u201c\u521b\u9020\u4e00\u4e2a\u9177\u70ab\u7684\u7f51\u9875\u670d\u52a1\u201d\uff0c\u800c\u4e0d\u4ec5\u4ec5\u662f\u5b66\u4e60Firebase\u7b49\u540e\u7aef\u548c\u7f16\u7a0b\u77e5\u8bc6\u3002\u56e0\u6b64\uff0c\u6211\u60f3\u5c3d\u6700\u77ed\u7684\u8def\u5f84\uff0c\u8d70\u5411\u201c\u521b\u9020\u4e00\u4e2a\u9177\u70ab\u7684\u7f51\u9875\u670d\u52a1\u201d\u7684\u9053\u8def\uff0c\u4e3a\u6b64\u8fdb\u884c\u6280\u672f\u5b66\u4e60\u3002\u987a\u4fbf\u63d0\u4e00\u4e0b\uff0c\u4e3a\u4e86\u5b9e\u73b0\u201c\u521b\u9020\u4e00\u4e2a\u9177\u70ab\u7684\u7f51\u9875\u670d\u52a1\u201d\uff0c\u6211\u5e0c\u671b\u5728\u8bbe\u8ba1\u65b9\u9762\u4e0b\u529f\u592b\uff0c\u4f46\u6211\u5e76\u6ca1\u6709\u4ece\u96f6\u5f00\u59cb\u8fdb\u884c\u8bbe\u8ba1\u7684\u6280\u672f\uff0c\u6240\u4ee5\u6211\u6253\u7b97\u4f9d\u9760\u67d0\u79cd\u6846\u67b6\uff0c\u4f8b\u5982Vue.js\u3002<\/p>\n<p>\u73b0\u5728\uff0c\u6211\u9700\u8981\u4ece\u5934\u5f00\u59cb\u5b66\u4e60HTML\/CSS\/JavaScript\uff0c\u4ee5\u4fbf\u80fd\u591f\u4f7f\u7528Vue.js\uff01\u4f46\u662f\uff0c\u6211\u53d1\u73b0\u8981\u5b66\u5230Vue.js\u9700\u8981\u51e0\u4e2a\u6708\u7684\u65f6\u95f4\uff0c\u8fd9\u8ba9\u6211\u5931\u53bb\u4e86\u52a8\u529b\u3002\u56e0\u6b64\uff0c\u6211\u51b3\u5b9a\u4ece\u79bb\u76ee\u6807\u6700\u8fd1\u7684\u90e8\u5206\u5f00\u59cb\u5b66\u4e60\u3002\u4e5f\u5c31\u662f\u8bf4\uff0c\u6211\u7684\u9996\u8981\u76ee\u6807\u662f\u5728firebase\u4e0a\u76f4\u63a5\u4f7f\u7528Vue.js\u3002<\/p>\n<p>\u867d\u7136\u6211\u4e5f\u662f\u4e00\u540d\u5de5\u7a0b\u5e08\uff0c\u5373\u4f7f\u901a\u8fc7\u590d\u5236\u7c98\u8d34\u6765\u8fd0\u884c\u4ee3\u7801\uff0c\u6211\u4e5f\u4f1a\u60f3\u8981\u4e86\u89e3\u5176\u80cc\u540e\u7684\u539f\u7406\u3002\u56e0\u6b64\uff0c\u5728\u8fbe\u5230\u6700\u521d\u7684\u76ee\u6807\u540e\uff0c\u6211\u4f1a\u5b66\u4e60\u5e76\u6df1\u5165\u7406\u89e3\u652f\u6301Vue.js\u7684\u6280\u672fnode.js\u3002\u7136\u540e\uff0c\u6211\u4f1a\u56de\u5230Vue.js(\u53ef\u80fd\u5728\u5b9e\u65bd\u590d\u5236\u7c98\u8d34\u90e8\u5206\u540e\u5bf9\u5176\u6709\u66f4\u6df1\u5165\u7684\u4e86\u89e3)\uff0c\u81ea\u5df1\u8fdb\u884c\u5b9a\u5236\u5e76\u5b66\u4e60\u3002\u7136\u540e\uff0c\u6211\u4f1a\u5b66\u4e60\u652f\u6301node.js\u7684\u6280\u672fJavaScript&#8230;\u901a\u8fc7\u5728\u6280\u672f\u5c42\u9762\u4e0a\u6df1\u5165\u6316\u6398\uff0c\u5e76\u5c06\u5b66\u5230\u7684\u77e5\u8bc6\u5e94\u7528\u4e8e\u79bb\u76ee\u6807\u6700\u8fd1\u7684\u90e8\u5206\uff0c\u63a8\u8fdb\u5b66\u4e60\u7684\u65b9\u5f0f\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">vue.js\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">firebase + vue.js\u3067\u89e6\u3063\u3066\u307f\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">node.js\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u3053\u308c\u3092\u7406\u89e3\u3057\u305f\u4e0a\u3067firebase + vue.js + node.js\u3067\u89e6\u3063\u3066\u307f\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">JavaScript\u306e\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u3053\u308c\u3092\u7406\u89e3\u3057\u305f\u4e0a\u3067firebase + vue.js + node.js + JavaScript\u3067\u89e6\u3063\u3066\u307f\u308b<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\u6211\u4e4b\u524d\u5e76\u4e0d\u5b8c\u5168\u4e86\u89e3Firebase\uff0c\u4f46\u5728\u4e0a\u4e00\u7bc7\u6587\u7ae0\u4e2d\u4f7f\u7528\u4e86Google Cloud Functions\u540e\uff0c\u6211\u51b3 [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-31912","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u6211\u9009\u62e9Firebase\u6765\u6258\u7ba1Nodejs\u5e94\u7528\u7684\u6545\u4e8b - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u6211\u9009\u62e9firebase\u6765\u6258\u7ba1nodejs\u5e94\u7528\u7684\u6545\u4e8b\u3002\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u6211\u9009\u62e9Firebase\u6765\u6258\u7ba1Nodejs\u5e94\u7528\u7684\u6545\u4e8b\" \/>\n<meta property=\"og:description\" content=\"\u6211\u4e4b\u524d\u5e76\u4e0d\u5b8c\u5168\u4e86\u89e3Firebase\uff0c\u4f46\u5728\u4e0a\u4e00\u7bc7\u6587\u7ae0\u4e2d\u4f7f\u7528\u4e86Google Cloud Functions\u540e\uff0c\u6211\u51b3 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u6211\u9009\u62e9firebase\u6765\u6258\u7ba1nodejs\u5e94\u7528\u7684\u6545\u4e8b\u3002\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-11-02T04:16:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-30T02:48:42+00:00\" \/>\n<meta name=\"author\" content=\"\u65b0, \u97f5\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u65b0, \u97f5\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e9%80%89%e6%8b%a9firebase%e6%9d%a5%e6%89%98%e7%ae%a1nodejs%e5%ba%94%e7%94%a8%e7%9a%84%e6%95%85%e4%ba%8b%e3%80%82\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e9%80%89%e6%8b%a9firebase%e6%9d%a5%e6%89%98%e7%ae%a1nodejs%e5%ba%94%e7%94%a8%e7%9a%84%e6%95%85%e4%ba%8b%e3%80%82\/\",\"name\":\"\u6211\u9009\u62e9Firebase\u6765\u6258\u7ba1Nodejs\u5e94\u7528\u7684\u6545\u4e8b - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-11-02T04:16:39+00:00\",\"dateModified\":\"2024-04-30T02:48:42+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e9%80%89%e6%8b%a9firebase%e6%9d%a5%e6%89%98%e7%ae%a1nodejs%e5%ba%94%e7%94%a8%e7%9a%84%e6%95%85%e4%ba%8b%e3%80%82\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e9%80%89%e6%8b%a9firebase%e6%9d%a5%e6%89%98%e7%ae%a1nodejs%e5%ba%94%e7%94%a8%e7%9a%84%e6%95%85%e4%ba%8b%e3%80%82\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e9%80%89%e6%8b%a9firebase%e6%9d%a5%e6%89%98%e7%ae%a1nodejs%e5%ba%94%e7%94%a8%e7%9a%84%e6%95%85%e4%ba%8b%e3%80%82\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u6211\u9009\u62e9Firebase\u6765\u6258\u7ba1Nodejs\u5e94\u7528\u7684\u6545\u4e8b\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9\",\"name\":\"\u65b0, \u97f5\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d484b6c6e4ae82e8a9efea989e1d2af46d9b6ef128101e63b18f559fca0ae627?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d484b6c6e4ae82e8a9efea989e1d2af46d9b6ef128101e63b18f559fca0ae627?s=96&d=mm&r=g\",\"caption\":\"\u65b0, \u97f5\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunxin\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e9%80%89%e6%8b%a9firebase%e6%9d%a5%e6%89%98%e7%ae%a1nodejs%e5%ba%94%e7%94%a8%e7%9a%84%e6%95%85%e4%ba%8b%e3%80%82\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u6211\u9009\u62e9Firebase\u6765\u6258\u7ba1Nodejs\u5e94\u7528\u7684\u6545\u4e8b - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u6211\u9009\u62e9firebase\u6765\u6258\u7ba1nodejs\u5e94\u7528\u7684\u6545\u4e8b\u3002\/","og_locale":"zh_CN","og_type":"article","og_title":"\u6211\u9009\u62e9Firebase\u6765\u6258\u7ba1Nodejs\u5e94\u7528\u7684\u6545\u4e8b","og_description":"\u6211\u4e4b\u524d\u5e76\u4e0d\u5b8c\u5168\u4e86\u89e3Firebase\uff0c\u4f46\u5728\u4e0a\u4e00\u7bc7\u6587\u7ae0\u4e2d\u4f7f\u7528\u4e86Google Cloud Functions\u540e\uff0c\u6211\u51b3 [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u6211\u9009\u62e9firebase\u6765\u6258\u7ba1nodejs\u5e94\u7528\u7684\u6545\u4e8b\u3002\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-11-02T04:16:39+00:00","article_modified_time":"2024-04-30T02:48:42+00:00","author":"\u65b0, \u97f5","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u65b0, \u97f5","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"3 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e9%80%89%e6%8b%a9firebase%e6%9d%a5%e6%89%98%e7%ae%a1nodejs%e5%ba%94%e7%94%a8%e7%9a%84%e6%95%85%e4%ba%8b%e3%80%82\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e9%80%89%e6%8b%a9firebase%e6%9d%a5%e6%89%98%e7%ae%a1nodejs%e5%ba%94%e7%94%a8%e7%9a%84%e6%95%85%e4%ba%8b%e3%80%82\/","name":"\u6211\u9009\u62e9Firebase\u6765\u6258\u7ba1Nodejs\u5e94\u7528\u7684\u6545\u4e8b - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-11-02T04:16:39+00:00","dateModified":"2024-04-30T02:48:42+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e9%80%89%e6%8b%a9firebase%e6%9d%a5%e6%89%98%e7%ae%a1nodejs%e5%ba%94%e7%94%a8%e7%9a%84%e6%95%85%e4%ba%8b%e3%80%82\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e9%80%89%e6%8b%a9firebase%e6%9d%a5%e6%89%98%e7%ae%a1nodejs%e5%ba%94%e7%94%a8%e7%9a%84%e6%95%85%e4%ba%8b%e3%80%82\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e9%80%89%e6%8b%a9firebase%e6%9d%a5%e6%89%98%e7%ae%a1nodejs%e5%ba%94%e7%94%a8%e7%9a%84%e6%95%85%e4%ba%8b%e3%80%82\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u6211\u9009\u62e9Firebase\u6765\u6258\u7ba1Nodejs\u5e94\u7528\u7684\u6545\u4e8b"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9","name":"\u65b0, \u97f5","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d484b6c6e4ae82e8a9efea989e1d2af46d9b6ef128101e63b18f559fca0ae627?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d484b6c6e4ae82e8a9efea989e1d2af46d9b6ef128101e63b18f559fca0ae627?s=96&d=mm&r=g","caption":"\u65b0, \u97f5"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunxin\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e9%80%89%e6%8b%a9firebase%e6%9d%a5%e6%89%98%e7%ae%a1nodejs%e5%ba%94%e7%94%a8%e7%9a%84%e6%95%85%e4%ba%8b%e3%80%82\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/31912","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=31912"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/31912\/revisions"}],"predecessor-version":[{"id":91452,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/31912\/revisions\/91452"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=31912"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=31912"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=31912"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}