gpt4 book ai didi

javascript - 无法通过 Express 路由从 Mongodb 中删除文档

转载 作者:搜寻专家 更新时间:2023-10-31 23:52:55 24 4
gpt4 key购买 nike

我想通过 id 删除一个 Mongodb 文档,将它传递给 Express 路由。
在控制台中,我收到一条消息说它已被删除。

GET /api/videolinks 304 94.792 ms - -
Removed id= 562b905f633288ac0d8b4567
DELETE /api/videolinks/562b905f633288ac0d8b4567 200 68.550 ms - 19743

但事实并非如此。

> db.hyperlinks.find({"_id": ObjectId("562b905f633288ac0d8b4567")})
{ "_id" : ObjectId("562b905f633288ac0d8b4567"), "file" : "http://storage.akamai.com/get/b113/p/coub/simple/cw_file/79632d71313/9aedca2cd4d3094e75834/iphone_hellosergii_iphone.mp4" }

我的 Angularjs 工厂:

/*global angular*/
angular.module('myService', [])

// each function returns a promise object
.factory('Videolinks', ['$http',function($http) {
return {
get : function() {
return $http.get('/api/videolinks');
},
delete : function(id) {
return $http.delete('/api/videolinks/' + id);
}
};
}]);

我的route.js

var path = require('path');
var Videolink = require('./models/mydb');

var mongodb = require('mongodb');

// Get links
function getLinks(res){
Videolink.find(function(err, hyperlinks) {
// if there is an error retrieving, send the error. nothing after res.send(err) will execute
if (err) {
res.send(err);
}

res.json(hyperlinks); // return all videos in JSON format
});
}

module.exports = function(app) {

// api ---------------------------------------------------------------------

// use mongoose to get all videos in the database
app.get('/api/videolinks', function(req, res) {
getLinks(res);
});

// delete a video
app.delete('/api/videolinks/:video_id', function(req, res) {
Videolink.remove({
_id : mongodb.ObjectID(req.params.video_id)
}, function(err) {

if (err) {
res.send(err);
}
console.log("Removed id= " + req.params.video_id);

getLinks(res);
});
});


// application -------------------------------------------------------------
app.get('*', function(res) {
res.sendFile('index.html', {root: path.join(__dirname, './public')}); // load the single view file
});
};

app.get 功能在这里运行良好。
app.delete 有什么问题?

这是我在 models/mydb 中的数据库架构

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var db_schema = new Schema({
//text: String
_id: String,
source: String,
orig_page: String,
likes: Number,
title: String,
file: String,
video_mobile_res: String,
video_high_res_mutes_muted: String,
audio_high_res: String,
video_med_res_muted: String,
audio_med_res: String
}, {collection: 'hyperlinks'});

module.exports = mongoose.model('Videolink', db_schema);

最佳答案

您的特殊问题是您在架构中将 _id 字段定义为字符串:

var db_schema = new Schema({
_id: String,
...

去掉它,您的代码应该可以正常工作。您甚至可能发现了 Mongoose 错误,因为您应该能够指定 _id 字段类型。也许 Mongoose 专家可以告诉我们更多信息。

关于javascript - 无法通过 Express 路由从 Mongodb 中删除文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36462417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com