Я следую этому учебнику.Несмотря на то, что код является именно тем, что упомянуто в учебнике, каждый раз, когда я запускаю запрос мутации graphql для обновления определенного твита, он возвращает null
и регистрирует null
в cmd.
Я проверял версию mongooseТо же самое (4.11.3). Я считаю, что с методом findOne что-то не так, поскольку даже в обработчике deleteTweet findOne возвращает null
.Это потому, что findOne нужен обратный вызов?но в учебнике обратный вызов не пройден.Я также заметил, что findOneAndUpdate работает нормально, но создает новую запись, обновляя существующий твит.
updateTweet: async (_, { id, ...rest}, { user }) => {
try {
await requireAuth(user)
const tweet = await Tweet.findOne({ id, user: user.id });
console.log(tweet);
if(!tweet) {
throw new Error('Not Found!');
}
return tweet.save();
} catch (e) {
throw e;
}
},
deleteTweet: async (_, { id }, { user }) => {
try {
await requireAuth(user);
const tweet = await Tweet.findOne({ id, user: user.id });
if(!tweet) {
throw new Error('Not Found !')
}
await tweet.remove();
return {
message: "Deleted Tweet Successfully"
}
}catch(error) {
throw error;
}
}
}
TweetSchema
import mongoose, { Schema } from 'mongoose';
const TweetSchema = new Schema({
text: {
type: String,
minlength: [5, 'Text need to be longer'],
maxlength: [144, 'Text is too long'],
},
user: {
type: Schema.Types.ObjectId,
ref: 'User'
},
favoriteCount: {
type: Number,
default: 0
}
}, { timestamps: true})
export default mongoose.model('Tweet', TweetSchema);