简体   繁体   English

将问题存储到一系列数据

[英]Storing questions to an array of data

I've been trying to figure out how to add comments to an array of data in my local db. 我一直在尝试找出如何向本地数据库中的数据数组添加注释。 The idea I'm working on now is to add the array of comments to the array of data so it's easy to know which comment is for which set of data. 我现在正在研究的想法是将注释数组添加到数据数组中,这样很容易知道哪个注释是针对哪个数据集的。 When I try to do so using the following code, it won't work: 当我尝试使用以下代码进行操作时,它将无法正常工作:

(This is in the userschema where I define the array that will hold the data) (这是在userschema中,我定义了将保存数据的数组)

test1: { type: array, required: false }

(Next I try to add the comment array with push but it won't work, I'm using test 0 as an example normally it will depend on what test you'd like to add your comments to. Test1 consists in turn of more arrays with the data in question to which I want to add the comments. Which is why I use user.test1[0]) (接下来,我尝试通过push添加注释数组,但无法正常工作,我以测试0为例,通常取决于您要向其添加注释的测试。Test1包含更多内容要将问题添加到其中的数据的数组。这就是为什么我使用user.test1 [0])

user.test1[0].push(newComment);

(That does not work while the following does using splice) (这在以下使用接头的情况下不起作用)

user.test1.splice(1, 0, newComment)

For some reason it seems like a can't access the user.test1[0] but I have no idea why? 由于某种原因,似乎无法访问user.test1 [0],但我不知道为什么? Or should I use another technique when it comes to adding comments to a test? 还是在测试中添加注释时应该使用另一种技术?


app.updateTest1 = function(newComment1, newComment2, index) {
          app.errorMsg = false; // Clear any error message
          app.disabled = true; // Lock form while processing
          // Check if username submitted is valid
          var userObject = {}; // Create the user object to pass to function
          userObject._id = app.currentUser; // Pass current user _id in order to edit

          userObject.test1 = [$scope.newComment1, $scope.newComment2];

          User.editUser(userObject).then(function(data) {

          });
        };


    userFactory.editUser = function(id) {
        return $http.put('/api/edit', id);
    };


   router.put('/edit', function(req, res) {
        var editUser = req.body._id; // Assign _id from user to be editted to a variable
        if (req.body.name) var newName = req.body.name; // Check if a change to name was requested
        if (req.body.username) var newUsername = req.body.username; // Check if a change to username was requested
        if (req.body.email) var newEmail = req.body.email; // Check if a change to e-mail was requested
        if (req.body.permission) var newPermission = req.body.permission; // Check if a change to permission was requested

        if (req.body.test1) {
          var newTest1 = req.body.test1;
        }
        if (req.body.test2) {
          var firstTest2 = req.body.test2;
          var newTest2 = firstTest2.split(" ");
        }
        if (req.body.test3) {
          var firstTest3 = req.body.test3;
          var newTest3 = firstTest3.split(" ");
        }
        if (req.body.test4) {
          var firstTest4 = req.body.test4;
          var newTest4 = firstTest4.split(" ");
        }
        if (req.body.test5) {
          var firstTest5 = req.body.test5;
          var newTest5 = firstTest5.split(" ");
        }

        // Look for logged in user in database to check if have appropriate access
        User.findOne({ username: req.decoded.username }, function(err, mainUser) {
            if (err) {
                // Create an e-mail object that contains the error. Set to automatically send it to myself for troubleshooting.
                var email = {
                    from: 'MEAN Stack Staff, cruiserweights@zoho.com',
                    to: 'gugui3z24@gmail.com',
                    subject: 'Error Logged',
                    text: 'The following error has been reported in the MEAN Stack Application: ' + err,
                    html: 'The following error has been reported in the MEAN Stack Application:<br><br>' + err
                };
                // Function to send e-mail to myself
                client.sendMail(email, function(err, info) {
                    if (err) {
                        console.log(err); // If error with sending e-mail, log to console/terminal
                    } else {
                        console.log(info); // Log success message to console if sent
                        console.log(user.email); // Display e-mail that it was sent to
                    }
                });
                res.json({ success: false, message: 'Something went wrong. This error has been logged and will be addressed by our staff. We apologize for this inconvenience!' });
            } else {
                // Check if logged in user is found in database
                if (!mainUser) {
                    res.json({ success: false, message: "no user found" }); // Return error
                } else {
                    // Check if a change to name was requested
                    if (newName) {
                        // Check if person making changes has appropriate access
                        if (mainUser.permission === 'admin' || mainUser.permission === 'moderator') {
                            // Look for user in database
                            User.findOne({ _id: editUser }, function(err, user) {
                                if (err) {
                                    // Create an e-mail object that contains the error. Set to automatically send it to myself for troubleshooting.
                                    var email = {
                                        from: 'MEAN Stack Staff, cruiserweights@zoho.com',
                                        to: 'gugui3z24@gmail.com',
                                        subject: 'Error Logged',
                                        text: 'The following error has been reported in the MEAN Stack Application: ' + err,
                                        html: 'The following error has been reported in the MEAN Stack Application:<br><br>' + err
                                    };
                                    // Function to send e-mail to myself
                                    client.sendMail(email, function(err, info) {
                                        if (err) {
                                            console.log(err); // If error with sending e-mail, log to console/terminal
                                        } else {
                                            console.log(info); // Log success message to console if sent
                                            console.log(user.email); // Display e-mail that it was sent to
                                        }
                                    });
                                    res.json({ success: false, message: 'Something went wrong. This error has been logged and will be addressed by our staff. We apologize for this inconvenience!' });
                                } else {
                                    // Check if user is in database
                                    if (!user) {
                                        res.json({ success: false, message: 'No user found' }); // Return error
                                    } else {
                                        user.name = newName; // Assign new name to user in database
                                        // Save changes
                                        user.save(function(err) {
                                            if (err) {
                                                console.log(err); // Log any errors to the console
                                            } else {
                                                res.json({ success: true, message: 'Name has been updated!' }); // Return success message
                                            }
                                        });
                                    }
                                }
                            });
                        } else {
                            res.json({ success: false, message: 'Insufficient Permissions' }); // Return error
                        }
                    }


                    if (newTest1) {
                      // Check if person making changes has appropriate access
                      if (mainUser.permission === 'admin') {
                          // Look for user in database
                          User.findOne({ _id: editUser }, function(err, user) {
                              if (err) {
                                  res.json({ success: false, message: 'Something went wrong. This error has been logged and will be addressed by our staff. We apologize for this inconvenience!' });
                              } else {
                                  // Check if user is in database
                                  if (!user) {
                                      res.json({ success: false, message: 'No user found' }); // Return error
                                  } else {

-> (this is where i think the problem is) if (Array.isArray(newTest1)) {
                                          var index = newTest1[2];
   -> this doesn't work                      user.test1[0].push(newTest1);
                                              //user.test1.splice(index, 0, newTest1)
                                        } else {
                                          var testet1 = newTest1.split(" ");
                                          user.test1.push(testet1); // Assign new name to user in database
                                        }



                                          // Save changes
                                          user.save(function(err) {
                                              if (err) {
                                                  console.log(err); // Log any errors to the console
                                              } else {
                                                  res.json({ success: true, message: 'Name has been updated!' }); // Return success message
                                              }
                                          });
                                  }
                              }
                          });
                      } else {
                          res.json({ success: false, message: 'Insufficient Permissions' }); // Return error
                      }
                    }

You need to make sure user.test1[0] value exists before manipulating it. 在操作之前,需要确保user.test1[0]值存在。 So if your user.test1 因此,如果您的user.test1

 var user = {}; user.test = []; var arrayToPush = [1,2,3]; try { user.test[0].push(arrayToPush) } catch (err) { document.getElementById('out').innerHTML += err } var user2 ={} user2.test=[]; try { user2.test.push(arrayToPush) user2.test.push(arrayToPush) } catch (err) { document.getElementById('out2').innerHTML += err } document.getElementById('out2').innerHTML += user2.test[0] 
 <div id="out"></div> <br> <div id="out2"></div> 

array has no values at all you can't push to it anything. 数组根本没有任何值,您什么也不能推入。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM