我尝试使用sails.js创建名为Edit函数和更新函数的函数来更新数据库中的项目但是它的长度不能读取未定义的属性。我有点卡在这里,请帮忙。
This is a picture of Edit and Update functions
This is an error result that I got when I click on Edit button
<!DOCTYPE html>
<html>
<head>
<title>Edit Item | Make4You</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js"></script>
</head>
<body>
<h1 class="">Edit Item</h1>
<form method="post" action="/item/update?id=<%= items.id %>">
<div class="form-group">
<label for="title">Title</label>
<input type="text" name="title" class="form-control" value="<%= items.title %>">
<label for="category_id">Category</label>
<select name="category_id">
<% for (var j=0; j<categories.length; j++){ %>
<option value="<% if(items[i].category_id == categories[j].id){ %>"><%= categories[j].name %></option>
<% } %>
<% } %>
</select>
<label for="description">Description</label>
<input type="text" name="description" class="form-control" value="<%= items.description %>">
<label for="width">Width</label>
<input type="text" name="width" class="form-control" value="<%= items.width %>">
<label for="height">Height</label>
<input type="text" name="height" class="form-control" value="<%= items.height %>">
<label for="price">Price</label>
<input type="price" name="price" class="form-control" value="<%= items.price %>">
</div>
<input type="submit" value="submit">
</form>
</body>
</html>
&#13;
答案 0 :(得分:0)
在您的修改方法中,您似乎尝试使用相同的ID(Item
)同时获取Category
和req.param('id')
...您可能意味着要么通过在两个不同的ID中,或使用附加到提取的Item
或类似内容的类别ID ...
此外,find
和findOne
之间存在一些混淆。 find
将始终返回一个结果数组,可能为空。 findOne
会在找到时返回单个对象,如果不是,则返回undefined
:
Category.find({id: category_id}).exec(function(err, results) {
// results is an array, possibly empty
});
Category.findOne({id: category_id}).exec(function(err, results) {
// results is either a model or undefined
});
从您的视图返回的错误,看起来可能你想要数组。请记住,检查空结果(undefined
或零长度数组)是查看err
参数的一个令人不快的检查 - 空结果不是错误。