gpt4 book ai didi

mongodb - 使用 Mongoose、Express、NodeJS 更新模型

转载 作者:IT老高 更新时间:2023-10-28 13:04:49 26 4
gpt4 key购买 nike

我正在尝试更新 MongoDB 中的实例化模型('Place' - 我知道它适用于其他路线)并且花了一段时间尝试正确执行此操作。我还试图重定向回查看“地点”的页面以查看更新的属性。

Node v0.4.0、Express v1.0.7、Mongoose 1.10.0

架构:

var PlaceSchema = new Schema({
name :String
, capital: String
, continent: String
});

Controller /路由:

app.put('/places/:name', function(req, res) {
var name = req.body.name;
var capital = req.body.capital;
var continent = req.body.continent;
Place.update({ name: name, capital: capital, continent: continent}, function(name) {
res.redirect('/places/'+name)
});

});

我尝试了很多不同的方法,但似乎无法得到它。
另外,我不是如何声明三个{name、capital 和continent} 变量来阻止进一步的操作吗?谢谢。还感谢一般调试帮助。 Console.log(name)(声明正下方)不记录任何内容。

Jade 形态:

h1 Editing #{place.name}
form(action='/places/'+place.name, method='POST')
input(type='hidden', name='_method', value='PUT')
p
label(for='place_name') Name:
p
input(type='text', id='place_name', name='place[name]', value=place.name)
p
label(for='place_capital') Capital:
p
input(type='text', id='place_capital', name='place[capital]', value=place.capital)
p
label(for='place_continent') Continent:
p
textarea(type='text', id='place_continent', name='place[continent]')=place.continent
p
input(type="submit")

最佳答案

您必须在更新任何内容之前找到该文档:

Place.findById(req.params.id, function(err, p) {
if (!p)
return next(new Error('Could not load Document'));
else {
// do your updates here
p.modified = new Date();

p.save(function(err) {
if (err)
console.log('error')
else
console.log('success')
});
}
});

使用与您相同的设置在生产代码中为我工作。除了 findById,您还可以使用 mongoose 提供的任何其他查找方法。只需确保在更新之前获取文档即可。

关于mongodb - 使用 Mongoose、Express、NodeJS 更新模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5024787/

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