TL; DR - 我正在尝试将表单输入中的收集值用作文档_id
,但我得到的是404。
我有一个打开并收集表单数据的模式。我在表单中的第一个输入是:
<input type="text" id="name" name="name" data-ng-model="name" />
当我尝试修改Mongo(Mongoose)模型时,要使用name
作为_id
,表单不会发布。我从http://sitegoeshere/#!/somethings/whatever_i_type_in_for_name
示例模型:
var SomethingSchema = new Schema({
_id: {
type: String,
default: 'default',
trim: true
}
}
mongoose.model('Something', SomethingSchema);
在我的Angular控制器中:
$scope.create = function() {
// Create new Something object
var something = new Somethings ({
_id: this.name
});
// Redirect after save
something.$save(function(response) {
$location.path('somethings/' + response._id);
}, function(errorResponse) {
$scope.error = errorResponse.data.message;
});
};
我被告知MongoDB允许字符串作为_id类型,所以给出了什么?有什么想法吗?
更新:这里也有些奇怪。我想知道这是否是Mongoose的限制或错误,所以我进入了数据库并创建了两个文档:
> db.subnets.find().pretty()
{ "_id" : ObjectId("546bef63395b0694d51b5cbe"), "description" : "description!" }
{ "_id" : "mystring", "description" : "more description!" }
当我访问我的应用并尝试提取各自的观看次数时,我可以查看自定义_id
文档的数据,但在尝试访问其他文档时会收到500内部服务器错误。
GET http://localhost:3000/somethings/546bef63395b0694d51b5cbe 500 (Internal Server Error)
GET http://localhost:3000/somethings/mystring 200 OK
答案 0 :(得分:1)
问题最有可能是this.name
- 看起来未定义。