gpt4 book ai didi

node.js 回调、嵌套函数、如何重构

转载 作者:太空宇宙 更新时间:2023-11-04 02:21:40 25 4
gpt4 key购买 nike

我是 Node.js 和 Express 的新手。我想创建一个 Vendor 并将其与 City 对象关联。

//城市模型 var mongoose = require('mongoose');

var CitySchema = new mongoose.Schema({
name: String
});

//供应商模型

var mongoose = require('mongoose');

var VendorSchema = new mongoose.Schema({
name: String,
city: { type: mongoose.Schema.Types.ObjectId, ref: 'City' }
});


mongoose.model('Vendor', VendorSchema);

//routes/index.js

vendor.save(function) 位于 City.findOne(function) 内部,看起来有点难看。我希望代码遵循单一职责规则,或者让代码更干净。编写这些嵌套回调函数的最佳实践是什么?

非常感谢。

mongoose.model('City', CitySchema);

router.post('/vendor', function(req, res, next){
var vendor = new Vendor();
vendor.name = req.body.name;

City.findOne({name:req.body.city}, function(err, city) {
if (err) return next(err);
vendor.city = city;

vendor.save(function(err, vendor) {
if (err) { return next(err); }
res.json(vendor);
});
});
});

最佳答案

您可以尝试使用Model.populate() :

var Vendor = mongoose.model('Vendor', VendorSchema);

var opts = [{ path: 'city', match: { name: req.body.city}}];

var vendor = new Vendor({
name: req.body.name
});

Vendor.populate(vendor, opts, function (err, vendor) {
if (err) { return next(err); }
res.json(vendor);
});

关于node.js 回调、嵌套函数、如何重构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33080789/

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