将问题存储到一组数据中

时间:2017-08-01 05:58:11

标签: javascript arrays node.js comments

我一直在试图弄清楚如何在本地数据库中为数据数组添加注释。我现在正在处理的想法是将注释数组添加到数据数组中,这样就可以很容易地知道哪个注释是针对哪组数据的。当我尝试使用以下代码时,它将无法正常工作:

(这是在我定义将保存数据的数组的userschema中)

test1: { type: array, required: false }

(接下来我尝试使用push添加注释数组,但它不起作用,我使用测试0作为示例通常它将取决于您要添加注释的测试.Test1包含在转向更多数组与我想要添加注释的相关数据。这就是我使用user.test1 [0]的原因

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

(当以下使用拼接时,这不起作用)

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

出于某种原因,似乎无法访问user.test1 [0],但我不明白为什么?或者,在为测试添加注释时,我应该使用其他技术吗?

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
                      }
                    }

1 个答案:

答案 0 :(得分:0)

在操作之前,您需要确保user.test1[0]值存在。所以,如果你的user.test1

&#13;
&#13;
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]
&#13;
<div id="out"></div>
<br>
<div id="out2"></div>
&#13;
&#13;
&#13;

数组没有任何值,你可以推动任何事情。