Javascript 如何使用NodeJS在Firebase中构造我的数据

Javascript 如何使用NodeJS在Firebase中构造我的数据,javascript,node.js,firebase,firebase-realtime-database,google-cloud-firestore,Javascript,Node.js,Firebase,Firebase Realtime Database,Google Cloud Firestore,我希望我的数据结构如下: const db = admin.database(); const ref = db.ref("Students"); //var newMessageRef = ref.push(); <- Don't do that exports.uploadFile = functions.https.onRequest((req, res) => { cors(req, res, () => { const uniqueI

我希望我的数据结构如下:

const db = admin.database();
const ref = db.ref("Students");
//var newMessageRef = ref.push();  <- Don't do that

exports.uploadFile = functions.https.onRequest((req, res) => {
      cors(req, res, () => {

        const uniqueID = 97888888888888;  <- Student ID
        const uniqueCourseKey = 0;  <- uniqueCourseKey

        if (req.method !== 'POST') {
            return res.status(500).json({
                message: 'Not allowed'
            })
        } else {
             return ref.child(uniqueID).update({
                  [uniqueCourseKey]: {
                        course: req.body.course,
                        credits: req.body.credit,
                        lecturer : 'Prof. Lee'
                      }         
               }).then(() => {
                   res.status(200).json({
                   message: "okkkkasss"
                });
....
Student->Reg_num->someindex(从1开始-像 唯一键)->课程详细信息

然而,我编写的代码给出了一个不正确的结构。有人能帮我整理一下吗

var db = admin.database();
var ref = db.ref("Students");
var newMessageRef = ref.push();

exports.uploadFile = functions.https.onRequest((req, res) => {
      cors(req, res, () => {
        var uniqueID = 97888888888888;
        if (req.method !== 'POST') {
            return res.status(500).json({
                message: 'Not allowed'
            })
        } else {
             return newMessageRef.set({
              [uniqueID]: {
                course: req.body.course,
                credits: req.body.credit,
                lecturer : 'Prof. Lee'
              }
            }).then(() => {

               res.status(200).json({
                   message: "okkkkasss"
                });
 ...
注意:
-LC-lS2HPMbZW9AdT19K
是从代码中自动添加的代码。这是因为我使用了
ref.push()

不要使用
ref.push()
ref.set()
,而是使用
ref.update()
,如下所示:

const db = admin.database();
const ref = db.ref("Students");
//var newMessageRef = ref.push();  <- Don't do that

exports.uploadFile = functions.https.onRequest((req, res) => {
      cors(req, res, () => {

        const uniqueID = 97888888888888;  <- Student ID
        const uniqueCourseKey = 0;  <- uniqueCourseKey

        if (req.method !== 'POST') {
            return res.status(500).json({
                message: 'Not allowed'
            })
        } else {
             return ref.child(uniqueID).update({
                  [uniqueCourseKey]: {
                        course: req.body.course,
                        credits: req.body.credit,
                        lecturer : 'Prof. Lee'
                      }         
               }).then(() => {
                   res.status(200).json({
                   message: "okkkkasss"
                });
....
const db=admin.database();
常数ref=db.ref(“学生”);

//var newMessageRef=ref.push();到底怎么了?除非索引不完全是0,1,2等,否则我看不到所需结构和您得到的结构之间的差异。我需要使用uniqueCourseKey(
-LC-lS2HPMbZW9AdT19K
)翻转
978888888888
(即学生ID)的位置-我希望它是0,1,2等。我希望在学生ID下列出学生所修的所有课程。因此,将有一个节点是学生ID,当我扩展它时,我将能够看到学生所修的所有课程。Renaud Tarnec,您建议在这种情况下不要使用push或“从不”使用push?你能更好地解释这个吗?thanks@lesimoespush将使用自动生成的唯一键创建新数据,请参阅。密钥类似于-IKo28nwJLH0Nc5XeFmj。在大多数情况下,这是完全可以的,但是OP想要使用自己的钥匙。因为他想更新一个节点,所以我建议使用update()。他本可以使用set(),但在这种情况下,他将覆盖节点上的现有数据。希望这能有所帮助。@lesimomes所以换句话说,我不建议“永远不要使用push()。只需根据需要选择方法:设置、推送或更新