我正在将GraphQL与NodeJ和Mongoose一起使用(我猜GraphQL在这里无关紧要)
运行查询时,我收到一条消息,提示无法读取未定义的属性save
。
resolve (parent, args) {
let books
book.find(
{
name: args.name
}, function (error, result){
console.log(result.length)
if (result.length == 0) {
console.log(args.name)
books = new book({
name: args.name,
genre: args.genre,
authorName: args.authorName
})
Author.find(
{
name: args.authorName
},
function (err, results) {
if (results.length == 0) {
let author = new Author({
name: args.authorName
})
author.save()
}
});
}
})
return books.save()
}
这是我的代码,上面注意两个console.log。第一个console.log的长度为零,第二个console.log的长度为
作者和书也是我要导入的猫鼬模式
const Author = require("../models/author.js")
const book = require("../models/book.js")
出于范围的考虑,我在let books
下方声明了resolve (parent, args) {
。
问题:现在,我在JS方面没有太多经验,所以有人可以帮助我并在这里分享我做错了什么吗?
答案 0 :(得分:1)
您的问题是book.find函数是异步的。这意味着包含from PIL import ImageGrab
import os
from PIL import Image
path='C:\ProgramData\'
player_id='1'
player_name='player'
_format='PNG'
pic_name = player_id + '.' + _format
screen = Image.Image
screen = Image.new("RGB", (1280, 720), 0)
def make_screen_shot():
try:
screen = ImageGrab.grab()
screen.show()
except IOError:
return False
else:
return True
def save_pic():
pic_name = player_id + '.' + _format
try:
screen.save(os.path.join(path, pic_name), _format)
except IOError:
return False
else:
return True
make_screen_shot()
save_pic()
的行将在book.find函数的回调之前执行。设置books变量后,您可以将调用移至回调中的book save。