У меня есть модель:мангуст модели обновления перед сохранением
const wordSchema = mongoose.Schema({
author: {type: Object, default: 'unknown'},
quote: String,
source: {type: String, default: 'unknown', index: true},
rating: {type: Number, default: 0},
createdAt: {type: Date, default: Date.now},
updatedAt: {type: Date, default: Date.now},
});
Теперь после получения запроса POST на мой сервер, я хочу, чтобы сделать запрос GET в википедию, и получить информацию автора, а затем добавить его в моя модель как объект, и напишите эту модель в мою базу данных.
app.post('/', function(req, res) {
let author = {};
let quote = new Word({
author: req.body.author,
quote: req.body.quote,
source: req.body.source,
rating: req.body.rating,
});
let authorName = req.body.author.replace(/ /g, '%20');
let url = 'https://en.wikipedia.org/w/api.php?action=query&format=json&titles=' + authorName + '&prop=pageimages|extracts&pithumbsize=200&exsentences=10&exintro=true';
request.get(url, (error, response, body) => {
if(error) {
return error;
}
let data = JSON.parse(body);
let pageID;
for(page in data.query.pages) {
pageID = page;
}
author = {
name: req.body.author,
thumbnail: data.query.pages[pageID].thumbnail.source,
flavorText: data.query.pages[pageID].extract,
};
});
// Save the quote
quote.pre('save', (next) => {
this.author = author;
})
quote.save(function(err, quote) {
if (err) {
res.send(err);
}
res.redirect('/words');
});
});
Теперь я попытался обновить значение с помощью функции .pre
, но я получаю
quote.pre не является функцией
Что бы быть «правильный способ делать это и что я делаю неправильно?
с этим, я просто получаю wordSchema не определен –
вы должны поместить этот кусок кода, где схема определяется, конечно, не внутри функции запроса. –
Итак, вы предлагаете мне переместить всю функцию HTTP-запроса в файл схемы? –